g++의 and 와 &&
글쓴이: jrubber / 작성시간: 목, 2004/11/25 - 2:55오후
int x = 10; int y = 40; if (x == 10 or y == 20) { printf("OK \n"); } else { printf("NOT OK \n"); }
이런 코드가 있다고 했을때 g++로 하면 그냥 컴파일이 되고 동작도
정상입니다..
&&대신 and ... || 대신 or 를 써도 정상인데
gcc에서는 에러이고 VC++에서도 에러입니다.
g++에서 되는 이유는 뭘까요?
처음에는 단지 python이랑 헷갈려서 잘못친 코드가 컴파일이 되길래
살펴본 것인데.. 아직 원인은 모르겠네요..
Forums:
C99에서는 and, or 등이 iso646.h에서 정의된 매크로입니다.
C99에서는 and, or 등이 iso646.h에서 정의된 매크로입니다. 그러니까 gcc에서
쓰려면 #include <iso646.h> 하면 됩니다.
반면 C++에서 이들은 키워드이므로 헤더를 따로 #include 할 필요가 없습니다.
따라서 g++이 정상이고 VC++은 잘못된 것입니다. VC++에서는 ciso646 헤더에서
이것들을 매크로로 정의해서 쓸 수 있게는 했는데 표준에는 위배되는 것입니다.
댓글 달기