0

필자는 가능한 한 문서 및 인터넷 검색을 시도했지만 Xcode 컴파일러를 사용하여 할당 연산자가 if 문에서 사용되는 경우 경고를 발행하지 못했습니다.if 문에서 Xcode 3.1 컴파일러가 할당 연산자를 경고하는 방법?

가 나는 비교 이런 종류의 입력의 매우 강한 습관이있어 RealBasic에서오고 : C에서

if x = 5 then ... 

을 물론, 그 구문은 5 개 다음 테스트의 값 x를 할당 그것은이 0 인 경우 결과는 볼, 그리고 "올바른"연산자는 다음과 같습니다

if (x == 5) { ... } 

내가 몇 가지 발견했습니다 컴파일러 비교 경우에 만든 할당이있는 경우 경고 할 수 있어야한다고 언급하지만 Xcode 3.1/gcc에서이 기능을 켜는 방법을 찾을 수 없습니다. -pedantic 옵션을 찾았지만 경고를 생성하지 못했습니다.

"=="대신 "="으로 밝혀진 버그를 추적하는 데 두 번 상당한 시간을 투자 했으므로 경고가 필요합니다.

은 내가 (컴파일러 오류가 발생할 수 있음) 대신이 작업을 수행 할 수 있다는 사실을 알고 :

if (5 = x) { ... } 

을 ...하지만, 너무 깊이 배어 든 코딩 습관을 변경해야합니다. 서투른 것처럼 보이고 뒤로 향하는 것은 말할 것도 없습니다.

감사합니다.

답변

1

링크를 통해 옵션을 설정하는 방법에 대해 설명합니다.

  • 컴파일러 경고가 "누락 된 중괄호 및 괄호", 또는 -Wparentheses입니다 :

    다음은 앞으로이를 찾을 수있는 사람을위한 좀 더 정보입니다.

  • Xcode에서 현재 대상에 대해 정보 입수를 선택하면 경고가 켜져 있습니다.

  • iPhone 시뮬레이터 SDK는 이 아니며이 표시되지 않습니다. 이 컴파일러 옵션이 표시됩니다.

  • SDK를 iPhone 디바이스로 전환하면 " 중괄호와 괄호가 누락되었습니다"라는 GCC 4.2 경고 섹션이 표시됩니다. GCC_WARN_MISSING_PARENTHESES = "YES"아이폰 장치 SDK에서 해당 옵션을 켜기 다시 Similator로 전환 한 후

  • 는 "사용자 정의"빌드 설정 되어 추가 된 것을 보여줍니다.

  • If 문에서 할당이 실제로 필요한 경우 경고를 피하려면 괄호를 두 번 사용할 수 있습니다.

(두 번 괄호 예 :

if ((x = 5)) { ... } 

애플의 표준 싫어하는 않지만 경고는, 마치 마법처럼 작동합니다 : 아마 그 시스 - 떠날거야

if (self = [super init]) { ... } 

을 프로젝트에서 엄청난 양의 프로젝트로 끝나지 만, 괄호를 두 배로 만들거나 할당을 별도의 줄로 나눕니다.

감사합니다.

+0

그 깃발은 나를 위해 작동하지 않았다. 이 코드는 : if (newlyCreated = true) {goToLastElement = true; }'플래그가 사용 가능하더라도 xcode/g ++는 경고를 발행하지 않습니다. (참고 : C++ 코드) –

+0

방금 ​​bool 변수에 대해 작동하지 않는다는 것을 알았습니다 : / –

1

내가 생각하는 벽 옵션을 찾고 있습니다.

int main(void) { 

    int x = 5; 
    if (x=5) { 
    } 
    return 0; 
    } 

$ g++ -pedantic x.cc 
$ g++ -Wall x.cc 
x.cc: In function ‘int main()’: 
x.cc:7: warning: suggest parentheses around assignment used as truth value 

link 리드를했던 내가 필요로 무엇을 ennuikiller의 대답에 Xcode의 GUI

관련 문제