C:宏的打印值

时间:2016-02-10 20:33:25

标签: c macros

我正在使用C遗留代码。在代码中,使用了一个宏:

static int _main(A_MACRO *input_obj)
{
 ....

我不确定A_MACRO声明input_obj的数据类型是什么。如何将此信息打印到屏幕上?

我试着这样做:

static int _main(A_MACRO *input_obj)
{
sprintf("%s is the macro", A_MACRO);
....

但是这导致了此错误消息:

error: expected primary-expression before ‘)’ token

1 个答案:

答案 0 :(得分:1)

您可以创建一个“stringize”宏,它将定义转换为如下字符串:

#define STRINGIZE_(x) #x
#define STRINGIZE(x) STRINGIZE_(x)

然后你只需用宏名称“呼叫”它:

printf("A_MACRO is defined as %s\n", STRINGIZE(A_MACRO));

或者,根据您使用的编译器,它可能有一个显示宏定义的选项。例如,使用gcc,您可以使用-dM选项:

gcc -dM file.c | grep A_MACRO