我最近正在修改一些代码,并在函数中的一行上发现了一个预先存在的错误:
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;。