C++ __LINE__宏的类型是什么

pra*_*ran 19 c++ macros logic visual-c++

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

Fre*_*urk 22

C++03§16.8p1:

__LINE__当前源行的行号(十进制常量).

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

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


pax*_*blo 5

C++标准简单地说:

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

它实际上并没有说明类型,所以它很可能与你的源代码中的一个未修饰的整数相同int.允许范围的上端2G - 1支持的事实(即使范围较小1).

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

但是,这只是支持.我无法在C++或C标准中找到明确的陈述.它只是有意义*它将被翻译成类似于42它经历预处理阶段的东西,这就是编译器将看到的内容,完全像42(a int)一样对待它.


*a:这不是我的常识第一次出错,但是:-)