강좌 & 팁
글 수 2,412
2015.10.26 18:40:06 (*.39.166.80)
47207
간혹 C언어를 배우는 분께 이런 질문을 받습니다.
if 절에서 함수를 호출하고 결과로 반환된 값이 0이면 정상 처리하는
것이 이상하다는 것이죠.
이상하게 생각할 수 있는 것이 C언어에서는 0은 거짓으로 0이 아닌 숫자는
참으로 판단하기 때문이죠. 거짓이라면 부정적인 생각이 드는데,
다른 분의 코드를 보면 0 일 때 정상 처리되었다고 판단하는 것이 이상하다는
얘기입니다.
아래 코드만 보더라도 사용하려는 장치를 정상적으로 열었다면 TRUE값을 반환하면
프로그램 코드가 읽기 쉽게 보입니다.
if ( open_device( "사용하려는 장치"){
// 정상 처리
}
그러나 프로그램을 작성하다 보면, 그리고 대부분의 C언어가 제공하는 함수는
아래와 같이 작성하게 합니다.
if ( 0 == open_device( "사용하려는 장치"){
// 정상 처리
}
이유는 간단합니다. 에러가 발생했는데, 그 에러 상황이 여러 가지일 경우를 대비하기
위해서 입니다.
아래의 코드를 봐 주세요.
switch( open_device( "사용하려는 장치")){
case 0: 정상 처리;
break;
case -1 : 장치가 없음;
break;
case -2 : 장치를 사용할 권한이 없음;
break;
case -3 : 이미 다른 어플리케이션이 사용 중
break;
default : 기타 에러;
break;
}
이해 되시죠? ^^