gpt4 book ai didi

c - 当我定义具有相同名称的宏时会发生什么

转载 作者:太空狗 更新时间:2023-10-29 14:51:36 26 4
gpt4 key购买 nike

当我在一个源文件中有多个同名的#define时会发生什么:

例如:

#define Dummy 1
#define Dummy 2

我不打算使用它,但在生产代码中看到了类似的东西。这是否包含在标准中?

最佳答案

这是违反约束的情况,因此需要符合标准的编译器来发出诊断。

C11, 6.10.3 Macro replacement状态:

An identifier currently defined as an object-like macro shall not be redefined by another #define preprocessing directive unless the second definition is an object-like macro definition and the two replacement lists are identical. [..]

如前所述,如果替换相同,则不违反约束。所以

#define X 1
#define X 2

需要诊断;而

#define X 1
#define X 1

没问题。类似的约束适用于类似函数的宏(C11、6.10.3、2)。

关于c - 当我定义具有相同名称的宏时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49447269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com