반응형
'std :;' C ++에서합니까?
최근에 일부 코드를 수정하고 함수 내 한 줄에서 기존 버그를 발견했습니다.
std:;string x = y;
이 코드는 여전히 컴파일되고 예상대로 작동합니다.
이 파일이 있기 때문에 문자열 정의 작동 using namespace std;(가) 때문에, std::처음부터 필요했다.
문제는 왜 std:;컴파일이되며 무엇을하고 있는가입니다.
std:의 대상으로 사용할 수있는 레이블입니다 goto.
@Adam Rosenfield 가 주석에서 지적했듯이 법적 레이블 이름입니다.
C ++ 03 §6.1 / 1 :
레이블에는 고유 한 이름 공간이 있으며 다른 식별자를 방해하지 않습니다.
레이블, 빈 문, 문자열 선언이 이어집니다 x.
뒤에 문자열이 오는 레이블
(expression)std: (end of expression); (another expression)string x = y;
컴파일러는 무슨 일이 일어나고 있는지 알려줍니다.
#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 .
참고 URL : https://stackoverflow.com/questions/12807115/what-would-std-do-in-c
반응형
'Programing' 카테고리의 다른 글
| Octave / Matlab : 벡터를 확장하여 자체적으로 반복되도록 하시겠습니까? (0) | 2020.09.08 |
|---|---|
| 여러 항목에 의한 mysql 쿼리 순서 (0) | 2020.09.08 |
| 다양한 브라우저에서 javascript로 클라이언트 측 파일 내용 읽기 (0) | 2020.09.08 |
| IE CSS 필터를 재설정하거나 무시하려면 어떻게합니까? (0) | 2020.09.08 |
| jquery가있는 jsonp (0) | 2020.09.08 |