김재구님께서 컴파일러 옵션을 찾아서 알려주셨네요.
저도 거기까진 잘 몰랐습니다.
bcc32.exe 안에 그런 새 키워드들이 들어있어서 짐작은 했는데 확증을 못잡아서리...
그러나저러나...
Daniel님과 저는 표준에 대해 시각이 좀 다른 것 같습니다.
제가 보기엔, 정말로 중요한 것은, 표준단체에서 발표하는 표준안을 따르느냐 아니냐가 아니라,
실질적으로 개발자들이 사용하는 코드가 이기종 컴파일러들 사이에 호환이 되느냐 아니냐입니다.
그래서 헤더파일을 인클루드하면 된다, 정도로 말씀을 드린 거구요.
또, ISO이든 ANSI이든 IEEE이든 IETF이든, 이들 단체에서 발표하는 표준안은 엄격하게 말하면
"표준권고안"이지 실질적인 표준안이 될 수 없다고 생각하고 있습니다.
IT 업계에서 실질적인 표준은 업계의 대다수가 따라야만 가능한거죠.
그리고 그게 표준안의 목적이기도 하구요.
비슷한 예로, ISO C99보다 ANSI C89가 실질적인 업계의 표준으로 인정받고 있는 것도 그렇고요.
일반적으로 C 표준안을 ANSI C라고 하지 ISO C라고 하지는 않잖습니까.
표준이 그토록 중요했던 시기는 1989년에 ANSI C 표준안이 발표됨으로써 지나갔다고 봅니다.
그전까지는 개발자들이 많이 사용하던 코드들이 수없이 호환이 안되었으니까요.
C++의 경우엔 표준화 이전에도 C의 표준화과정에 있었던 그런 대란은 없었죠.
단, 비주얼 C++은 별개의 문제죠.
개발자들이 실제로 많이 사용하는 코드가 호환이 안되니...
기럼...
Daniel 님이 쓰신 글 :
: iso646.h를 include하면 macro처럼 처리되는거고,
: 실제 ISO/IEC 14882-1998 : Programming Language C++ 표준안에서는
: not_eq 같은 대체표기 token이 내장 keyword라는거죠.
: 가령 C++ Builder에서는 iso646.h를 include하지 않으면
: not_eq 같은 것을 변수명으로 사용할 수 있지만,
: C++ 표준안에 따르면 이것들은 keyword라서 변수명으로 사용할 수 없잖아요.
: 현재 GCC 3.2랑 CodeWarrior Professional 7.0 for Windows에서는
: 헤더 파일이 필요없이 키워드로 처리가 됩니다.
: 빌더에 포함되어 있는 C++ 컴파일러도 더 업데이트가 필요해 보이네요.
:
|