我有这个案子:
int a=5;
int b=6;
int *p_a=&a;
int *p_b=&b
std::cout << *p_a / *p_b;
看起来很好。但是,如果我删除分区符号/
和*p_a
之间的空格,请执行以下操作:
std::cout << *p_a /*p_b;
编译器将/*
理解为评论。
这种行为是标准行为吗?我甚至没有*/
作为评论的结束符号。
注意:我在MSVS 2013上。
修改
这似乎是一种标准行为,因为SO代码格式化也将其视为注释:D
答案 0 :(得分:1)
这是标准行为。 n4296草案在2.7评论[lex.comment]
中说字符
/*
开始注释,注释以字符* /结尾。这些评论没有嵌套......
这意味着如果删除/
和*
之间的空格,任何符合要求的C ++编译器都会将其视为(此处未终止的)注释的前导序列。