下面这个代码段能编译通过吗?
void foo(void)
{
int/*abc*/i;
//in/*XYZ*/t j;
char *p = "abcde //alkjd";
// 这一行是注释 \
这是什么
}
答案是:可以。(VS2008测试)
分析:
第1行:编译器将注释部分当作空格,它相当于: int i;
所以第2行是错误的,它相当于: in t j;
再看第3行:编译器是先将"//"后面的内容都当作注释呢,还是将"//"也当作字符串的一部分呢?经过测试发现,答案是后者。
最后一点:虽然"\"符号也在注释这一行,但它也是起作用的,不能完全当作注释而被”忽略“掉。