我正在使用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
答案 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