我正在使用 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
最佳答案
您可以创建一个“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
关于C:打印宏的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325346/