我最近正在修改一些代码,并在函数中的一行上发现了一个预先存在的错误:
std:;string x = y;
该代码仍然可以编译,并且按预期工作。
字符串定义有效,因为此文件是using namespace std;
,因此std::
首先不需要。
问题是,为什么要std:;
编译?它在做什么(如果有的话)?
我最近正在修改一些代码,并在函数中的一行上发现了一个预先存在的错误:
std:;string x = y;
该代码仍然可以编译,并且按预期工作。
字符串定义有效,因为此文件是using namespace std;
,因此std::
首先不需要。
问题是,为什么要std:;
编译?它在做什么(如果有的话)?
http://www.stackoverflow.com
编译的原因...
using namespace std;
:)
Answers:
std:
其标签,可用作的目标goto
。
正如@Adam Rosenfield在评论中指出的,这是一个合法标签名称。
C ++ 03§6.1/ 1:
标签具有其自己的名称空间,并且不会干扰其他标识符。
它是一个标签,后跟一个空语句,后跟一个string声明x
。
它是一个标签,后跟字符串
(expression)std: (end of expression); (another expression)string x = y;
(label-)statement
,而不是一个expression
。
using namespace std;
。