愤怒的菜鸟

本文总结记录一些在工作和学习中碰到的一些对C/C++宏的妙用,大都来自于android,chromium,webkit等开源项目代码。看到好的宏的使用,本文也会不定时的更新。

一. 妙用一:减少重复代码

1. 下例,通过宏的使用,定义了一系列仅仅关键字不同的变量和函数,,极大的减少了代码的重复。这样对代码进行修改、扩展等也更加方便。

#define V8_HIDDEN_PROPERTIES(V) \ V(objectPrototype) \ V(listener) \ V(attributeListener) \ V(scriptState) \ V(devtoolsInjectedScript) \ V(sleepFunction) \ V(toStringString) \ V(event)

class V8HiddenPropertyName { public: V8HiddenPropertyName() { }#define V8_DECLARE_PROPERTY(name) static v8::Handle<v8::String> name(); V8_HIDDEN_PROPERTIES(V8_DECLARE_PROPERTY);#undef V8_DECLARE_PROPERTY

private:#define V8_DECLARE_FIELD(name) v8::Persistent<v8::String> m_##name; V8_HIDDEN_PROPERTIES(V8_DECLARE_FIELD);#undef V8_DECLARE_FIELD };

#define V8_DEFINE_PROPERTY(name) \v8::Handle<v8::String> V8HiddenPropertyName::name() \{ \ V8HiddenPropertyName* hiddenPropertyName = V8BindingPerIsolateData::current()->hiddenPropertyName(); \ if (hiddenPropertyName->m_##name.IsEmpty()) { \ hiddenPropertyName->m_##name = createString("WebCore::HiddenProperty::" V8_AS_STRING(name)); \ }\ return hiddenPropertyName->m_##name; \}V8_HIDDEN_PROPERTIES(V8_DEFINE_PROPERTY);

版权声明:本文为博主原创文章,未经博主允许不得转载。

当你感到悲哀痛苦时,最好是去学些什么东西。

愤怒的菜鸟

相关文章:

你感兴趣的文章:

标签云: