다른

Mac 경고: 진리값으로 사용되는 할당 주위에 괄호를 제안하십시오.

NS

루블레사하

오리지널 포스터
2008년 12월 22일
  • 2009년 1월 8일
안녕하세요
이 코드 조각을 사용하고 있습니다.

무효 * 핸들_;

if (handle_ =dlopen('/System/Library/Frameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('............');

}
else if (handle_ =dlopen('/System/Library/PrivateFrameworks/DiskArbitration.Framework/Versions/A/DiskArbitration',RTLD_NOW))
{
printf('..................');
}

그러나 나는 경고를 받고 있습니다 :
첫 번째 줄, 즉 'for' 루프에 대해 '진리값으로 사용되는 할당 주위에 괄호를 제안합니다. .... 누군가가 이 경고를 없애도록 도와줄 수 있습니까? 에게

크푸아

2006년 7월 25일


  • 2009년 1월 8일
먼저 if() 문에 부작용이 있는 것은 일반적으로 좋지 않습니다.

그러나 때로는 이것이 의미하는 바를 코딩하는 가장 간단한 방법입니다(귀하의 예에 반드시 그런 것은 아니지만). if 문에 할당이 있는 경우 GCC는 일반적으로 다음과 같이 예상합니다.

코드: |_+_|
할당 주위에 추가 괄호를 확인하십시오. GCC는 다음 오류를 피하기 위해 괄호를 사용할 것을 제안합니다.

코드: |_+_|
foo에 할당된 값이 NULL인지 확인하지 않고 부울(bar() != NULL)을 foo에 할당합니다.

또한 명시적 부울 검사가 있는 것이 관례이고 일반적으로 더 명확하므로 GCC가 이를 기대하는 이유입니다. NS

샌더

에게
2008년 4월 24일
  • 2009년 1월 9일
진술 때문이기도 하다.

코드: |_+_|
C는 정확하지만(b를 에 할당하고 0이 아닌 경우 확인), 대부분의 경우 사람들은 실제로

코드: |_+_|
if() 내부의 할당은 예외이므로 GCC는 이에 대한 경고를 발행합니다. 또한 미래의 코드 독자를 위해 추가 괄호는 '예, 여기에서 할당을 의미합니다'를 나타냅니다.