2009-12-17 2 views
3

이런 식으로해도 괜찮은지 아닌지 궁금합니다.null이 아닌 포인터를 테스트하고 그렇지 않으면 null을 리턴합니다.

if (p_Pointer != NULL) { 
    return p_Pointer; 
} else { 
    return NULL; 
} 

else가 없으면 무엇이든. 요점은 포인터가 null 인 경우 NULL이 반환 될 것이므로이 단계를 무의미하게 낭비하는 것처럼 보일 것입니다. 그러나 디버거를 통해 단계별로 수행 중이라면 포인터가 NULL인지 아닌지 검사 할 수 있기 때문에 디버깅 목적으로 유용합니다.

이 연습에 대한 의견이나 제안이 있으십니까?

답변

8

매우 유용하지는 않지만이 작업을 수행하는 데 '괜찮습니다', 즉 아무 문제가 없습니다. 디버거를 단계별로 실행 중이라면 p_Pointer의 값을 표시 할 수 있어야합니다.

그것은 정말 이상한 보이는,

if(flag == TRUE) { 
    return TRUE; 
} else { 
    return FALSE; 
} 

보다는이기 때문에 단지 return flag;

+0

동의. [15 char min] – Anonymous

+0

또한 if (a> 5)와 동일합니다. 그렇지 않으면 거짓을 반환합니다. – Tom

6

당신은 말할 수 다음 if statement 그 경우에 불필요

return p_Pointer; 

때문입니다.

+2

@Anon : 또한 디버거의 "감시"기능을 사용하여 포인터가 NULL인지 아닌지 확인할 수 있습니다. –

+0

동의합니다. 무의미한 검사로 코드를 복잡하게 만들고 싶지는 않습니다. – Trevor

1

유사합니다. 실제로 더 많은 일을하거나 표현이 정기적으로 사용된다면 그것은 의심을 불식시킬 것입니다. 좀 더와

는 그렇게 드문 일이 아니다 :

if (p_Pointer != NULL) { 
     return p_Pointer; 
    } else { 
     assert(p_Pointer); 
     return NULL; 
    } 

또는

assert(p_Pointer); 
    return p_Pointer; 

데르의 vielleicht 다음은-것에

return require_valid_pointer(p_Pointer); 
1

이 (조건부 중단 점을 사용하여 단일 "return"행) 대신?

관련 문제