C:打印宏的值

标签 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

最佳答案

您可以创建一个“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/

相关文章:

c - 使用 doxygen 记录配置宏

dictionary - 用于创建 map 的 Clojure 宏

c - C中的行计数程序

c - sscanf 在从 c 中的内存指针扫描 short int 时返回 -1?

ios - 来自宏的 NSDictionary initWithObjectsAndKeys 失败

c - 如何对字符串使用 switch 和 case

python - 如何配置 PyCharm 开发 LibreOffice Python 宏?

C++ 获取在 Linux 后台按下的键

c - fscanf 的奇怪异常和变量声明的顺序

c - malloc 中是否需要类型转换?