c中 #define 的不足

Underatanding of #define in c

本文关键字:#define      更新时间:2023-10-16
#define print(args) printf args
print(("Hello"));

我得到了输出

Hello

如果我调用打印,它可以正常工作。 你能解释一下它是如何工作的吗?

这是一个宏的示例。

编译程序时,第一步是预处理器。

预处理器查找您的宏:

#define print(args) printf args

这意味着,如果您的程序中有类似的东西

print(<some text>)

然后<some text>的值将从您的宏中处理为args,即代码

print(<some text>)

将替换为

printf <some text>

现在,您有以下代码行:

print(("Hello"));

如果你把<some text>=args=("Hello"),那么预处理器将替换

print(("Hello"))

printf ("Hello")

整条线将是:

printf ("Hello");

这是合法的C代码来打印Hello