类函数的宏和变量

问题描述 投票:1回答:2

出于某些难以理解的原因,在我的代码中,我有类似以下内容:

#define pippo(x) printf("%d",x)
...
... many lines down in the code
...
int pippo = 0;

相同的标识符pippo已用于类似函数的宏和变量名!除了这可能会导致贫穷的维护者感到困惑之外,我还想知道这是否符合标准。

[C99和C11(在6.10.3中。)都说:

10 [...]类似函数的宏名称的每个后续实例,后跟一个(作为下一个预处理令牌介绍了被替换列表中的替换列表替换的预处理令牌定义[...]

[他们不说如果函数名称的宏名是not后跟'(',会发生什么,我担心某些编译器可能会认为这是一个错误(或者可能会发出警告)。 )。

我是否太担心了?

出于某些难以理解的原因,在我的代码中,我有类似以下内容的代码:#define pippo(x)printf(“%d”,x)... ...代码中的许多行... int pippo = 0;相同的标识符pippo已用于...

c c-preprocessor
2个回答
3
投票

不替换(的函数宏的名称的实例。


1
投票

5.1.1.2,第4点,指定在以下情况下如何“调用”预处理器:

© www.soinside.com 2019 - 2024. All rights reserved.