Просмотр расширенных макросов C - PullRequest
44 голосов
/ 12 июня 2009

Если я хочу развернуть макрос C, какие есть хорошие способы сделать это (помимо отслеживания его вручную)?

Например, GTK_WIDGET_SET_FLAGS, он использует макрос, который использует макрос, который использует макрос (или два) ...

Я хочу просто увидеть, как оно каким-то образом расширяется автоматически, вместо того, чтобы искать каждый макрос, каждый шаг пути.

UPDATE

Я пробовал cpp, но, похоже, он делал только первый проход

на:

GTK_WIDGET_SET_FLAGS(obj, 13)

Я расширил включаемый файл, а затем:

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

Update2:

Проблема включенного пути решается с помощью gcc -E и передачи каталога include с опцией -I

Ответы [ 11 ]

0 голосов
/ 21 мая 2018

Попав в ловушку отрывочной IDE, попробуйте что-то вроде

#define DISPLAY_VALUE2(x) #x
#define DISPLAY_VALUE(x) DISPLAY_VALUE2(x)
#pragma message("#DEFINE F_CPU " DISPLAY_VALUE(F_CPU))

для производства

…/sketch_may21a.ino: In function 'void loop()':
…/sketch_may21a.ino:10:54: note: #pragma message: #DEFINE F_CPU 16000000L
#pragma message("#DEFINE F_CPU " DISPLAY_VALUE(F_CPU))
                                                     ^

благодаря "mdematos" на http://MicroChip.com/forums/m724722.aspx

...