3

clang documentation on reference counting은 "Objective-C에서 기본적으로 ARC는 예외가 아닙니다"라고 읽었습니다. 그것은 말할 진행 :clang의 컴파일 옵션은 Objective C와 Objective C++ 사이의 기본값을 변경합니까?

프로그램은 다음을 가능하게하기 위해 옵션 -fobjc-arc-exceptions 컴파일 할 수있다, 또는 옵션 -fno-objc-arc-exceptions 명시 적으로 지난 같은 인수 "승리"로,이를 해제 할 수 있습니다. Objective-C++에서 -fobjc-arc-exceptions은 기본적으로 사용됩니다.

나는 흥미를 돋우었다. Objective-C와 Objective-C++ 사이의 기본 변경 사항이있는 다른 컴파일러 옵션이 있습니까?

보완 질문 : Objective-C 모드에서만 (*.m) Objective-C++ 모드 (*.mm 개 파일)의 clang으로 순수하게 Objective-C 코드를 컴파일하는 것의 차이점은 무엇입니까?

+0

문서를 보거나 LLVM 사람들에게 문제를 제기해야합니다. – vonbrand

답변

3

가장 좋은 방법은 모든 C 언어 여기

에서가 출력 연타 무엇을 기록하는 것입니다 당신이 그 출력이 다를 수 있습니다 볼 수 있듯이 나는 OBJ-C++ 컴파일

clang++ -fobjc-arc main.mm -v 

/.../ 
-fblocks 
-fobjc-runtime=macosx-10.7.0 
-fobjc-dispatch-method=mixed 
-fobjc-default-synthesize-properties 
-fobjc-arc 
-fobjc-arc-cxxlib=libstdc++ 
-fobjc-arc-exceptions 
-fobjc-exceptions 
-fcxx-exceptions 
-fexceptions 
-fdiagnostics-show-option 
-fcolor-diagnostics 
    /.../ 

에서 가지고 무엇의 일부입니다 당신이 그것을 컴파일하는 곳마다 다릅니다. 그러나 그들 중 일부는 상수입니다.

각기 다른 c 패밀리 파일을 시도해 각각의 기본 옵션이 무엇인지 확인해야합니다.

희망이 있으면 도움이 될 것입니다.

0

질문의 두 번째 부분에 답하려면 Objective-C++ 모드가 아닌 Objective-C 모드로 파일을 컴파일하면 정적 분석기 [1]의 지원이 향상됩니다. 나는 컴파일러가 (정적 분석기를 사용하지 않고) 일반적으로 더 정확한 경고를 생성 할 것이라고 믿는다. 그러나 나는 그 정보의 출처를 찾거나 기억할 수 없다.

관련 문제