-std
플래그는 C++ 프로그램을 컴파일 할 때 사용하고자하는 표준 (예 : -std=c++11
또는 -std=gnu++11
)을 지정하는 데 사용되어야한다고 자주 언급됩니다. 일반적으로 다루지 않는 관련 질문 (적어도 내가 말할 수있는 한, 예를 들어 the highly-upvoted comment by Dennis under the selected answer by Oskar N. 참조) 은 컴파일러에서 사용하는 기본 C++ 표준이인지 확인하는 방법입니다.C++ 컴파일러의 기본 C++ 표준을 결정하는 방법은 무엇입니까?
는 나는 (적어도 ++ g 용) man 페이지를 보면 알 수 있다는 것을 생각하지만, 나는 이것이 맞다면 물어보고 싶은게 있고 더 확실한/구체적인 방법이있는 경우 :
에서이 -std
에 대한 설명으로, man 페이지는 GNU dialects를 포함한 모든 C++ 표준을 나열합니다. 하나의 특정 표준 하에서, 그것은 다소 눈에 띄지 않게 진술되었고, This is the default for C++ code.
(C 표준에 대한 유사한 진술이있다 : This is the default for C code.
).
예를 들어, g++/gcc version 5.4.0
의 경우이 값은 gnu++98/gnu++03
이며, g++/gcc version 6.4.0
의 경우이 값은 gnu++14
입니다.
이것은 자연스럽게 기본 표준을 나타내는 것처럼 보이지만, 이므로으로 눈길을 끌었습니다. 이 경우에, 아마도 이것은 매우 똑같은 질문에 대해 궁금해하는 다른 사람들에게 유용 할 것입니다. 다른 C++ 컴파일러를위한 다른 편리한 방법이 있습니까?
편집 : 나는 this related question을 보았지만 거기에 대한 답변은 매우 복잡한 데다 명확하고 명확한 진술을하지 못했습니다. 아마도 그것이 확증되면 그 질문에 대한 대답으로 이것을 제출해야합니다.
이유를 묻고 싶습니다. – Yakk
@Yakk 특정 컴파일러의 기본값 (및 시간에 따라 업데이트되는 방식)과 추가 플래그를 추가해야하는 경우를 아는 것이 유용하기 때문에 유용합니다. – PhysicsCodingEnthusiast
"유용합니다"는 알고 싶은 이유를 설명하지 않습니다 : 사용 이유를 설명하여 알고 싶은 이유를 설명합니다. 두 번째 요점은 기본적으로 항상 플래그를 추가해야합니다. 여기에 "기본값"을 사용하는 것은 나쁜 생각입니다. – Yakk