IT이야기

컴파일러 경고 - 할당 주위에 진실 값으로 사용되는 괄호를 제안합니다.

cyworld 2022. 6. 17. 21:49
반응형

컴파일러 경고 - 할당 주위에 진실 값으로 사용되는 괄호를 제안합니다.

아래 코드를 컴파일하려고 하면 다음 경고가 나타납니다.

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

반응형