如果我想扩展一个C宏,有什么好方法可以做到这一点(除了手动跟踪)?
例如,GTK_WIDGET_SET_FLAGS它使用一个使用宏的宏(或两个)......
我希望看到它以某种方式自动扩展,而不是搜索每一个宏,每一步.
我试过cpp,但似乎只做了第一次传球
上:
GTK_WIDGET_SET_FLAGS(obj, 13)
Run Code Online (Sandbox Code Playgroud)
我扩展了包含文件,然后:
G_STMT_START{ ((GTK_OBJECT_FLAGS (obj)) |= (13)); }G_STMT_END
Run Code Online (Sandbox Code Playgroud)
这是由这些错误消息解释我在stderr上得到这个(当使用-o filename时)
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
通过使用gcc -E并使用-I选项传递include目录来解决包含路径问题