2014-01-27 1 views
3

나는 분명히 한 가지만 할 필요가있다. 대학에서는 C++ 프로그래밍 언어를 배우고 있으며 GCC의 일부인 GNU C++ 컴파일러를 사용하도록 제안합니다. Mac OS X Mavericks에서 명령 줄 도구을 developers.apple.com에서 다운로드합니다. 나는 간단한 C++ 프로그램을 작성하고 I는 다음과 같이 명령 ++ g 사용하여이 프로그램을 컴파일 :g ++ 컴파일러는 gcc 컴파일러와 C++에서 동일합니까? (Mac OS X)

g++ program.cpp 
./a.out 

을 그리고 프로그램이 완벽하게 실행됩니다. 하지만 다른 컴파일러를 사용하면이 특수 컴파일러에 올바른 구문/명령/라이브러리를 사용해야한다는 것을 알 수 있습니다. 따라서 University에서 우리는 "GNU C++ 컴파일러"를 사용하지만, g ++ 명령은 "GNU C++ 컴파일러"를 사용한다는 의미입니다.

건배.

+7

GNU C++를 사용하고 있는지 확인하기 위해'g ++ --version'을 사용할 수 있습니다. 내 OS X Mavericks에서'g ++'은'GNU C++'이 아니며'clang ++' – mitchelllc

+0

'으로 구성되어 있습니다 : --prefix =/Applications/Programming/Xcode.app/Contents/Developer/usr --with-gxx (LLVM 3.3svn 기반) 대상 : x86_64-apple-darwin13.0.0 스레드 모델 : posix' - 포함 된 dir =/usr/include/C++/4.2.1 Apple LLVM 버전 5.0 (clang-500.2.79) 그 결과입니다. –

+0

동일한 결과가 나타납니다. 그것은 GNU C++가 아닌'clang ++ '입니다. – mitchelllc

답변

1

, 내가 clang++를 사용하는 것을 선호하지만 당신의 경우 이 호환 가능해야합니다. 그러면 macports을 통해 실제 GNU 컴파일러를 설치할 수 있습니다.

(A xcode-select 단계를 포함하는) MacPorts를 설치 한 후, 단순히 수행

$ sudo port selfupdate 
$ sudo port install gcc46 

(또는 gcc47 등)

는 컴파일러가 $PATH (당신이 설정하는 경우 MacPorts를에있을 것입니다 올바르게) 표시되지만, 명시 적으로 /opt/local/bin/gcc46이됩니다 (sudo port select gcc 참조).

+0

homebrew를 사용할 수있을 때 왜 macports를 사용합니까? – rano

+0

@rano 왜냐하면 macports는 더 많은 포트를 가지고 있고 덜 복잡한 WRT'$ PATH' (적어도 내가 이해할 때까지)입니다. – trojanfoe

+0

Homebrew의'$ PATH'는 π처럼 쉽습니다 :'/ usr/local/bin'이 거기에 있는지 확인하십시오. 빵, 끝났어. – duskwuff

2

전통적으로 gccg++은 모두 GNU C 컴파일러 제품군의 구성 요소입니다. gcc은 C 컴파일러이고 g++은 C++ 컴파일러입니다. 맥 OS X의 최신 버전에

, 명령 gccg++은 모두 연타 C 컴파일러의 구성 요소 clangclang++에 대한 대체 이름으로 처리됩니다. 그러나이 컴파일러는 GCC와 거의 완전히 호환됩니다. 존재하는 몇 가지 차이점은 여러분이하고있는 과목에서 거의 나오지 않을 것입니다.

(가장 중요한 차이점은 Clang의 진단 기능이 훨씬 뛰어나다는 것입니다. 라인의 구문 오류가 발생하는 라인이 아닌 라인에서 구문 오류가 발생하는 지점을 정확히 지적하고 잠재적 인 오타 또는 미묘한 실수를 식별 할 수 있습니다. 상황이 GCC는 당신에게 비밀 오류 메시지가 어디에 줄 것이다. 당신은 그냥 C를 학습하는 경우,이 많이의 진가를 알아볼 것입니다.) @duskwuff 당으로

+4

더 나은 진단에 관한 내용은 논쟁의 여지가 있습니다. 이제 GCC는 ASCII 코드를 사용하여 코드 줄 내에서 오류가 발생한 지점을 정확히 가리 킵니다. 경쟁은 멋진 일 이네 :) – Praetorian

+0

그게 사실이야 고마워! 처음 C++ 프로그램을 컴파일 할 때, 컴파일러가 색상의 오류를 강조하고 Linux에서 gcc를 사용하는 것보다 오류에 대해 더 spesific하다는 것을 알았습니다. –

+1

@Praetorian : GCC의 파서는 구문 오류의 "근본 원인"을 확인하는 데 (여전히) 훌륭하지 않습니다.이 명령은 완전히 포기한 시점을 알려주지 만 멀리 떨어져있을 수 있습니다 실제 오류. 나는 그것이 개선되고 있다고 들었다. 그러나 그것은 Clang만큼 아직도 좋지 않다, 나는 두려워한다! – duskwuff