正如您从我的其他问题中看到的那样,你们中的许多人可能已经得到了答案。你能把这些知识分享给我吗?
原文由 prabhakaran 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如您从我的其他问题中看到的那样,你们中的许多人可能已经得到了答案。你能把这些知识分享给我吗?
原文由 prabhakaran 发布,翻译遵循 CC BY-SA 4.0 许可协议
C++ 标准简单地说:
__LINE__
:当前源行的假定行号(在当前源文件中)(一个整数常量)。
它实际上并没有说明类型,因此它很可能与源代码中的未修饰整数类型相同,即 int
。允许范围的上限是 2G - 1
的事实支持这一点(即使下限是 1
)。
#line
只允许数字(没有尾随 U
使其无符号)这一事实也可以被读取以支持这一点。
但是,这只是 支持。 我在 C++ 或 C 标准中都找不到明确的声明。这是有道理的*a ,当它经过预处理阶段时,它将被翻译成类似 42
的东西,这就是编译器将看到的,将它完全 42
(an int
)。
*a : 虽然这不是我的常识第一次出错了 :-)
原文由 paxdiablo 发布,翻译遵循 CC BY-SA 2.5 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
C++03 §16.8p1:
这将是 int,或者如果 INT_MAX(允许小至 32,767)不够大(……我不会问……),那么它将是 long int。如果它比 LONG_MAX 大,那么您有未定义的行为,这一次在至少 2,147,483,647 行(LONG_MAX 的最小允许值)的文件中不是值得担心的问题。
同一部分还列出了您可能感兴趣的其他宏。