이 작업을 수행하는 가장 좋은 방법은 다음과 같습니다
는 REWRITE_PROGRAM 고급 신경 네트워크를 사용하여, 그 함수 (사전에 행 번호와 소스 파일을 제공)을 호출하는 매크로입니다
#ifndef FALSE
#define FALSE 0
#elif FALSE != 0
#undef FALSE
#define FALSE REWRITE_PROGRAM("FALSE")
#endif
#ifndef TRUE
#define TRUE 1
#elif TRUE != 1
#undef TRUE
#define TRUE REWRITE_PROGRAM("TRUE")
#endif
, 지능적으로 재 작성됩니다 TRUE 또는 FALSE의 상충하는 정의를 피할 수 있도록 TRUE가 1 이외의 것으로 정의되고 FALSE가 0이 아닌 것으로 정의됩니다. 수정 된 코드를 생성하고 빌드 한 후에는 새로 빌드 된 응용 프로그램 버전을 실행합니다 종료하십시오.
백업으로 다시 작성 AI는 가정이 올바르지 않은 경우에 REWRITE_PROGRAM
코드를 추가하여 새로운 가정이 올바른지 확인합니다.
궁극적으로 프로그램은 올바른 때까지 반복적으로 자체를 다시 작성하므로 TRUE 및 FALSE 정의 방법, 충돌 및 향후 정의가 변경 될지 걱정할 필요가 없습니다.
하지만 (!0) == 1 어쨌든 구현에 따라 달라질 수 있습니다. 하지만 당신이 정말로, 당신은하지한다고했다 경우 (bool_value == TRUE) { ... } 같은 조건을 많이하지 않는 한 문제가되지 않습니다. –
! 는 C의 부울 연산자이며 지정한 인자가 0이면 1을 반환하고 그렇지 않으면 0을 반환합니다. 사람들은 때때로 생각합니다! "스왑 비트"연산자이지만, 그렇지 않습니다. 그러나 당신의 요점은 잘 만들어졌습니다. C를 쓸 때 "거짓"이 0 인 것에 의지 할 수는 있지만 특정 값을 갖는 "사실"에 의존하는 실수 인 경우 0이 아니라고 확신 할 수 있습니다. – eemz