【发布时间】:2012-09-02 10:01:34
【问题描述】:
如果有这样的例程,我希望主应用程序可以访问...
char* get_widget_name(widget_t* w) {
return name(w);
}
以下两个宏我想“隐藏”,而显然在 get_widget_name 中使用
#define GET_WIDGET(self) (&(self)->base.widget)
#define name(self) (GET_WIDGET(self)->name)
我基本上是在结构中使用联合来“模拟”C 中的 c++ 继承。
【问题讨论】:
-
你的意思是
#undef MACRO_NAME? -
范围规则不适用于宏。宏可以在源文件中从
#define到#undefed 或文件末尾的任何位置使用。
标签: c inheritance struct scope unions