如果我想扩展一个C宏,除了手动跟踪外,还有什么好方法?
例如,GTK_WIDGET_SET_FLAGS
,它使用一个使用一个(或两个)宏的宏...
我只想看到它以某种方式自动扩展,而不是搜索每一个宏,每一步.
更新
我试过cpp,但似乎只做了第一次
打开:
GTK_WIDGET_SET_FLAGS(obj, 13)
我将include文件展开,然后:
G_STMT_START{ ((GTK_OBJECT_FLAGS (obj)) |= (13)); }G_STMT_END
我在stderr上得到的这些错误消息(使用-o文件名时)解释了这一点
gtk/gtkwidget.h:34:21: gdk/gdk.h: No such file or directory gtk/gtkwidget.h:35:31: gtk/gtkaccelgroup.h: No such file or directory gtk/gtkwidget.h:36:27: gtk/gtkobject.h: No such file or directory gtk/gtkwidget.h:37:31: gtk/gtkadjustment.h: No such file or directory gtk/gtkwidget.h:38:26: gtk/gtkstyle.h: No such file or directory gtk/gtkwidget.h:39:29: gtk/gtksettings.h: No such file or directory gtk/gtkwidget.h:40:21: atk/atk.h: No such file or directory
gtk、atk和gdk目录都在当前工作目录中,那么如何让cpp在其中搜索呢?
顺便说一句,gcc -E
给出的输出与cpp
完全相同
更新2:
通过使用GCC-E并使用-i选项传递包含目录,可以解决包含路径问题