문제

문서와 인터넷을 최대한 검색하려고 시도했지만 할당 연산자가 IF 문에 사용되는 경우 Xcode 컴파일러가 경고를 발행 할 수 없었습니다.

나는 Realbasic에서 왔는데, 이런 종류의 비교를 입력하는 매우 강한 습관이 있습니다.

if x = 5 then ...

물론 C에서는 구문이 x를 지정하여 5의 값을 지정한 다음 결과를 테스트하여 0이 아닌지 확인하고 "올바른"연산자는 다음과 같습니다.

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

IF 비교에 할당이있을 경우 컴파일러가 경고 할 수 있어야한다는 몇 가지 언급을 발견했지만 Xcode 3.1/GCC에서 켜는 방법을 찾을 수 없습니다. 나는 찾았다 -pedantic 옵션이지만 경고를 생성하지 않은 것 같습니다.

"=="대신 "="로 판명 된 버그를 추적하는 데 두 번 상당한 시간을 보냈기 때문에 경고의 도움을 원합니다.

대신이 작업을 수행 할 수 있다는 것을 알고 있습니다 (컴파일러 오류가 발생할 수 있음) :

if (5 = x) { ... }

... 그러나 그것은 뿌리 깊은 코딩 습관도 변화해야합니다. 그것은 서투르고 뒤로 보인다는 것은 말할 것도 없습니다.

감사!

도움이 되었습니까?

해결책 2

Ennuikiller의 답변의 링크는 내가 필요한 것을 이끌었습니다.

다음은 앞으로이 내용을 찾을 수있는 사람을위한 조금 더 많은 정보입니다.

  • 컴파일러 경고는 "교정기와 괄호가 누락 된"또는 -wparenthes입니다.

  • Xcode에서 현재 대상에 대한 정보를 선택하여 경고가 켜집니다.

  • 마침내 알았 듯이 iPhone Simulator SDK는 ~ 아니다 이 컴파일러 옵션을 표시하십시오.

  • SDK를 iPhone 장치로 전환하면 GCC 4.2 경고 섹션이 표시되며 여기에는 "교정기 누락 및 괄호"가 포함됩니다.

  • iPhone 장치 SDK에서 해당 옵션을 켜면 Similator로 다시 전환하면 "사용자 정의"빌드 설정이 추가되었음을 보여줍니다.GCC_WARN_MISSING_PARENTHESES = "예".

  • IF 문에 과제가 실제로 원하는 경우 경고를 피하기 위해 괄호를 두 배로 늘릴 수 있습니다.

(이중 1 분기 예제 :)

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

경고는 매력처럼 작동하지만 Apple의 표준을 싫어합니다.

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

나는 아마도 그와 같은 것을 떠날 것입니다. 그러나 프로젝트에서 엄청난 양의 양을 끝내면 괄호를 두 배로 늘리거나 할당을 별도의 줄로 나눕니다.

감사!

다른 팁

당신은 내가 생각하는 -월 옵션을 찾고 있습니다.

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

이것 링크 Xcode GUI를 통해 옵션을 활성화하는 방법을 설명합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top