최근에 일부 코드를 수정하고 함수 내 한 줄에서 기존 버그를 발견했습니다.
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;
:)
답변:
std:
의 대상으로 사용할 수있는 레이블입니다 goto
.
@Adam Rosenfield 가 주석에서 지적했듯이 법적 레이블 이름입니다.
C ++ 03 §6.1 / 1 :
레이블에는 고유 한 이름 공간이 있으며 다른 식별자를 방해하지 않습니다.
컴파일러는 무슨 일이 일어나고 있는지 알려줍니다.
#include <iostream>
using namespace std;
int main() {
std:;cout << "Hello!" << std::endl;
}
gcc와 clang은 모두 매우 명확한 경고를 제공합니다.
std.cpp:4:3: warning: unused label 'std' [-Wunused-label]
std:;cout << "Hello!" << std::endl;
^~~~
1 warning generated.
이 이야기에서 벗어나십시오. 항상 경고를 활성화하여 코드를 컴파일하십시오 (예 :)-Wall
.
using namespace std;
.