g ++에서 C ++ 11을 어떻게 사용합니까?


21

현재 gedit에 모든 코드를 입력하고 터미널을 사용하여 프로그램을 컴파일하고 있습니다. 그렇게하려면 다음을 입력하십시오.

$ g++ main.cpp -o main
$ ./main

그리고 이것은 효과가 있습니다. 그러나 C ++ 11을 사용하지 않습니다. C ++ 버전을 확인하고 C ++ 11을 사용하여 터미널을 통해 컴파일하는 방법은 무엇입니까?



항상 -std = c ++ 11을 포함해야합니까, 아니면 컴파일 할 때마다 자동으로 c ++ 11 또는
프랑스 마이크

답변:


53

-std=c++11플래그 를 사용하면 됩니다. 예를 들면 다음과 같습니다.

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main

이 모드는 -std=c++11명령 줄 플래그 -std=gnu++11를 사용 하여 선택 하거나 GNU 확장을 활성화 할 수도 있습니다 ( source ).

아래의 다른 플래그에 대한 설명을 참조하십시오. 나는 적어도 그 오류 플래그를 사용하면 장기적으로 인생을 더 쉽게 만들 것이라고 믿습니다. 스크립트가 무엇을하는지 더 잘 알고 나면 결과를 얻는 데 필요한 경우 경고를 생략 할 수 있지만 표준은 아닙니다. 이것이 도움이되기를 바랍니다. 여기 읽기 시작 하기 좋은 곳 이 있습니다.

  • -Wall — 모든 주요 경고를 활성화합니다.
  • -Wextra — 다른 중요한 경고를 활성화합니다.
  • -Werror— 모든 경고를 오류로 만들고 경고가보고되면 컴파일이 실패 합니다.

출처 :

  1. GCC : 옵션 요약
  2. GCC : 경고 요청 또는 억제 옵션

5
감사! 그 명령에서 "-Wall"과 "-Werror"의 목적이 무엇인지 설명해 주시겠습니까?

1
내 대답에 추가했습니다.
Videonauth

7
@ dhaneku.b : 문서를 읽어 보지 않겠습니까? 그것이 거기에 있습니다.
모니카와의 가벼움 경주

9
@LightnessRacesinOrbit이 문서는 Videonauth가 원래 예제 명령 줄에 포함되지 않았음에도 불구하고 Videonauth가 왜 추가해야한다고 생각했는지 설명하지 않아도되므로 반드시 "-Wall"및 " -Werror "에"-std = c ++ 11 "이있을 수 있습니다. (예, 이것의 후자에 대한 대답은 "특별한 것은 아니지만", 문서는 그렇게 말하지 않을 것이며, 문서에 언급되지 않은 이상한 모퉁이가 있습니다. "증거의 부재는 ' t 부재 증명 "및 그 모든 것.)
RM

2
이 모드는 -std=c++11명령 줄 플래그 -std=gnu++11를 사용 하여 선택 하거나 GNU 확장을 활성화 할 수도 있습니다. ( source )
Videonauth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.