동일한 C 소스 파일에서 #ifndef ABC
과 #if !defined (ABC)
을 보았습니다.C에서 "ifndef"와 "if! defined"의 차이점은 무엇입니까?
그들 사이에 미묘한 차이가 있습니까? (스타일의 문제인 경우 동일한 파일에서 사용하는 이유는 무엇입니까?)
동일한 C 소스 파일에서 #ifndef ABC
과 #if !defined (ABC)
을 보았습니다.C에서 "ifndef"와 "if! defined"의 차이점은 무엇입니까?
그들 사이에 미묘한 차이가 있습니까? (스타일의 문제인 경우 동일한 파일에서 사용하는 이유는 무엇입니까?)
아니, 그 방법을 사용하는 경우 둘 사이에 아무런 차이가 없습니다. 후자 형태 (defined()
사용)는 초기 #if
또는 후속 #elif
조건 중 하나가 더 복잡한 테스트를 필요로 할 때 유용합니다. #ifdef
은 여전히 작동하지만이 경우 #if defined()
을 사용하면 더 명확해질 수 있습니다. 예를 들어 둘 이상의 매크로가 정의되어 있는지 테스트하거나 특정 값과 같은지 테스트해야하는 경우
분산 (파일에서 둘 다 사용)은 위에서 언급 한 것처럼 사용법의 특정 미묘함에 따라 달라질 수 있습니다.
당신이 준 문맥에서, 그들은 동일합니다 : 당신은 단지 하나의 매크로 식별자의 존재를 확인하고 있습니다.
그러나 #if 형식을 사용하면 표현식을 평가할 수 있으므로 유용 할 수 있습니다.