我在编写代码时发现了一些有趣的东西。我在我的代码中定义了一个宏,并意外地使用关键字int
作为该宏的参数的变量名称。代码工作得很好,但我对此感到有点惊讶。我读过C中的关键字是保留字,不能用作变量名。可能宏参数的名称是关键字吗?
这是我的代码:
#include <stdio.h>
#define PRINT(int) printf("%d",int)
int main()
{
int x=2;
PRINT(x);
return 0;
}
任何人都可以解释我为什么会工作的罚款?关键字是否被保留并且不能用作C中的变量名,或者这是C中宏的一个例外吗?
这意味着我可以使用任何关键字宏,它会正常工作,对不对?这个东西只对C中的宏有效吗? – 2012-04-06 11:47:14
@dark_shadow:预处理器不知道C,所以就它而言*有*没有关键字(所以是的,你可以使用任何东西)。它在C和C++中有效。 – Jon 2012-04-06 11:48:40
感谢Jon清除怀疑。 – 2012-04-06 11:53:14