我最近修改了一些代码,并在函数中的一行上发现了一个预先存在的错误:
std:;string x = y;
Run Code Online (Sandbox Code Playgroud)
此代码仍然编译并一直按预期工作.
字符串定义是有效的,因为这个文件是using namespace std;
,因此std::
首先是不必要的.
问题是,为什么std:;
编译以及它做了什么,如果有的话?
K-b*_*llo 90
std:
它是一个标签,可用作目标goto
.
正如@Adam Rosenfield在评论中指出的那样,它是一个合法的标签名称.
C++03§6.1/ 1:
标签有自己的名称空间,不会干扰其他标识符.
小智 8
(expression)std: (end of expression); (another expression)string x = y;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2217 次 |
最近记录: |