C __LINE__ 宏的类型是什么

新手上路,请多包涵

正如您从我的其他问题中看到的那样,你们中的许多人可能已经得到了答案。你能把这些知识分享给我吗?

原文由 prabhakaran 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

C++03 §16.8p1:

LINE 当前源行的行号(十进制常量)。

这将是 int,或者如果 INT_MAX(允许小至 32,767)不够大(……我不会问……),那么它将是 long int。如果它比 LONG_MAX 大,那么您有未定义的行为,这一次在至少 2,147,483,647 行(LONG_MAX 的最小允许值)的文件中不是值得担心的问题。

同一部分还列出了您可能感兴趣的其他宏。

原文由 Fred Nurk 发布,翻译遵循 CC BY-SA 2.5 许可协议

C++ 标准简单地说:

__LINE__ :当前源行的假定行号(在当前源文件中)(一个整数常量)。

它实际上并没有说明类型,因此它很可能与源代码中的未修饰整数类型相同,即 int 。允许范围的上限是 2G - 1 的事实支持这一点(即使下限是 1 )。

#line 只允许数字(没有尾随 U 使其无符号)这一事实也可以被读取以支持这一点。

但是,这只是 支持。 我在 C++ 或 C 标准中都找不到明确的声明。这是有道理的*a ,当它经过预处理阶段时,它将被翻译成类似 42 的东西,这就是编译器将看到的,将它完全 42 (an int )。


*a : 虽然这不是我的常识第一次出错了 :-)

原文由 paxdiablo 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题