【发布时间】:2018-03-23 10:14:41
【问题描述】:
当我在一个源文件中有多个同名#defines 时会发生什么:
例如:
#define Dummy 1
#define Dummy 2
我不打算使用它,但在生产代码中看到了类似的东西。标准是否涵盖了这一点?
【问题讨论】:
-
请注意,您可以试试这个。
-
@Jean-FrançoisFabre 这将为我提供我使用的特定(预)编译器的答案,但如果我使用另一个编译器可能会改变。这就是我问的原因。
-
@Lundin 如果行为是实现定义的还是未定义的,不同的编译器会做不同的事情。如果这是其中之一,那么经验测试将毫无价值。
-
@Lundin:任何 C 实现,无论它多么严格地符合标准,都只是所有可能符合 C 实现的集合中的一个元素,既不能传达关于集合的全部信息,也不能具有权威性.
-
@Lundin:事实上,您必须知道 C 标准首先说明了什么,这意味着您之前的“然后使用标准 C 编译器”的声明没有用。使用标准 C 编译器并不能回答 C 标准所说的问题。
标签: c c-preprocessor language-lawyer