MS VC ++ 6 : 왜 반환! 거짓이 아닌가?
문제
일부 코드를 살펴보면 다른 개발자가 True의 모든 인스턴스를! false로 변경했음을 알았습니다. 왜 그렇게 하시겠습니까? 고마워
해결책
진실이 아닌 거짓을 쓸만한 이유는 없습니다.
나쁜 이유는 난독 화 (코드를 읽기가 더 어려워지기), 개인 취향, 글로벌 검색 및 재구점을 잘못 고려하고 부울 값을 정수로 변환하는 것이 포함될 수 있습니다.
BOOL 유형이 아니라 ints이며 부울 진술에 사용될 때 경고를 유발할 수있는 Win32의 진정한 정의에 의해 약간의 혼란이 발생했을 수 있습니다. 주로 0이 아닌 것은 "true"이지만 부울 대신 정수를 사용할 때 "true"가 항상 하나인지 확인하려면 때때로 이와 같은 셰 나니 간을 볼 수 있습니다. 여전히 좋은 이유가 아닙니다 ;-)
다른 팁
나는 전혀 모른다. 그리고 나는 한동안 C ++를 쓰고있다. 나는 그가 이유가 무엇이든 그들이 좋은 사람이 아니었다는 것을 생각합니다.
나는 이것이 역사적 일이라고 생각합니다. IIRC 일부 C/C ++ 컴파일러에는 컴파일러가 True로 표현하는 데 무엇을 사용할 것인지 알고있는 문제가있었습니다. 당신은 거짓이 0이라는 것을 알 수 있으므로! 거짓은 현재 ABI가 참을 수있는 모든 것이 될 것입니다.
일반적으로 이것은 중복이지만 유용한 몇 가지 특별한 경우가 있지만 생각할 수는 없습니다.
라인이라면 필요할 수 있습니다
#define true false
단지 일어난 헤더 어딘가에 있으려면 :)
어쩌면 그는 코드에서 너무 많은 진실과 거짓을 얻었고 쉽게 뒤집기를 원했습니다. 편집자의 검색을 사용하고 교체 할 수 있습니다.
나는 실제로 알지 못하지만 사실이 될 수 있습니다.