这个简单的程序应该清楚地打印出来
#include <iostream>
int main()
{
// the condition below is ignored! \\
if (false)
std::cout << "hello, world\n";
}
Run Code Online (Sandbox Code Playgroud)
然而,编译它打印hello, world(后面跟一个换行符)我尝试的所有编译器(gcc,clang,Sun CC,xlC).删除注释时,程序按预期运行,即程序不打印任何内容.
为什么条件(总是false)被注释存在而被忽略?
Ald*_*den 14
该\\脱逃的换行,并作出if (false)注释的一部分.
作为解释,\c ++代码中一行末尾的字符向预处理器表明下一行将被视为前一行的延续.因此,\有时称为续行字符.对于多行#defines,这通常很方便.
#define MY_LONG_MACRO \
for(int i = 0; i < 10; i++) \
{ std::cout << "multi-line macro"; }
Run Code Online (Sandbox Code Playgroud)