반응형
컴파일러 경고 - 할당 주위에 진실 값으로 사용되는 괄호를 제안합니다.
아래 코드를 컴파일하려고 하면 다음 경고가 나타납니다.
warning: suggest parentheses around assignment used as truth value
왜 이런 일이 일어날까요?이것은 꽤 흔한 관용어라고 생각합니다.난 심지어 내 코드에 이런 걸 쓰기도 해.
struct PIDList*
getRecordForPID(struct PIDList* list, pid_t pid) {
while(list = list->next)
if (list->pid == pid)
return list;
return NULL;
}
명확하게 해 주세요.그러면 컴파일러는 실수를 했을 가능성이 있다고 경고하지 않습니다.
while ( (list = list->next) != NULL )
또는
while ( (list = list->next) )
언젠가 컴파일러가 이런 실수를 저지르고 있다는 것을 알게 되면 기쁘실 겁니다.
그 특정한 관용구는 흔한 것이지만, 훨씬 더 흔한 것은 사람들이 사용하는 것이다.=
그들이 의미할 때==
그 관습은 당신이 정말로 말하는 것이=
는 괄호의 추가 레이어를 사용하는 것입니다.
while ((list = list->next)) { // yes, it's an assignment
그냥 '안전' 경고일 뿐이에요.이것은 비교적 흔한 관용어이지만, 또한 당신이 그것을 의도했을 때 비교적 흔한 오류이기도 하다.==
저 안에 있어요다음 괄호 세트를 추가하여 경고를 해제할 수 있습니다.
while ((list = list->next))
언급URL : https://stackoverflow.com/questions/5476759/compiler-warning-suggest-parentheses-around-assignment-used-as-truth-value
반응형
'IT이야기' 카테고리의 다른 글
&((구조명*)NULL -> b)는 C11에서 정의되지 않은 동작을 야기합니까? (0) | 2022.06.18 |
---|---|
페이지를 로드할 때 Nuxt JS Vuex 설정 데이터가 실시간으로 반영되지 않음 (0) | 2022.06.17 |
c에서 64비트 정수를 지정하는 방법 (0) | 2022.06.17 |
FolderBrowserDialog 대화 상자가 선택한 폴더로 스크롤되지 않는 이유는 무엇입니까? (0) | 2022.06.17 |
구성 요소 페이지 Vue로 푸시할 때 재귀 발생 (0) | 2022.06.17 |