gpt4 book ai didi

visual-c++ - gcc 和 C++ 预处理器可以处理的 #defines 数量是否有限制?

转载 作者:行者123 更新时间:2023-12-04 14:06:06 26 4
gpt4 key购买 nike

在讨论要定义大量常量和位模式的项目的设计可能性时,问题出现了标准编译器可以处理多少个#define?我认为这是一个非常大的数字,但我们很想知道是否有实际的上限。

最佳答案

对于“标准编译器”:

5.2.4.1:“翻译限制”

The implementation shall be able to translate and execute at least one program that contains at least one instance of every one of the following limits

...

4095 macro identifiers simultaneously defined in one preprocessing translation unit



请注意表达需求的方式有点奇怪。实现可以通过拥有一个单独的“黄金程序”来满足它,他们将其识别并编译为特殊情况,尽管这类似于操纵基准。在实践中,您可以阅读标准说,如果您的实现强加了可用内存以外的限制,那么该限制应至少为 4095。超过 4095,您在一定程度上依赖于特定于实现的行为。

一些编译器(微软)强加了一些低于标准规定的实现限制。我认为这些在 MSDN 上的某个地方列出,但可能仅适用于 C++。就 C 而言,因为我引用的是 C99,所以无论如何它可能与 MSVC 无关。

特别是对于 GCC 和 MSVC,测试给定的实现是否强加了任意限制应该不会太难,也许比查找文档更容易:-) 自动生成文件,只包含很长的 #define 列表。 ,看看预处理器如何处理它们。

关于visual-c++ - gcc 和 C++ 预处理器可以处理的 #defines 数量是否有限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696553/

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