C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[5737] 헤더 화일을 포함시키는 것은 정당한 방법은 아니죠.
Daniel [sypark] 1982 읽음    2002-09-12 21:52
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++ 컴파일러도 더 업데이트가 필요해 보이네요.

박지훈.임프 님이 쓰신 글 :
: 아래 패패루님 말씀처럼, C++Builder 6에서는 not_eq 등을 제외하면 다 컴파일됩니다.
: 간단히 답변을 드리면, iso646.h나 ciso646.h 헤더파일을 인클루드하면 됩니다.
:
: iso646.h와 ciso646.h 헤더파일은 각각 C와 C++ 표준 헤더파일이고, ciso646.h 헤더는 간단히
: iso646.h 헤더를 포함하는 역할만 합니다. 이 파일들을 보면 not_eq가 != 로 디파인되어 있습니다.
:
: Daniel님께서 allternate punctuation token라고 말씀하셨는데, 간단히 말해서 '대체표기법'이라고
: 생각하시면 됩니다. 이런 대체표기법은, ANSI에서 ISO로 C 표준이 넘어가면서 아스키코드의 문제점
: 때문에 필요성이 대두된 것입니다.
:
: 보통 프로그래밍 언어의 소스코드는 7비트 아스키코드로 되어있는데, 이 7비트 아스키코드의
: 몇개 문자는 유럽언어권의 언어마다 글자가 다릅니다. 그중 대표적인 것이 다음의 문자들입니다.
: # $ @ [ \ ] ^ ` { | } ~
:
: 이중 상당수가 C/C++ 언어에서 중요한 언어 요소로서 사용되는 것이죠.
: 이넘들이 유럽언어중 몇개국어에서는 이상한 다른 문자로 나타나기 때문에
: 그래서 이 문자들을 대체해서 표기할 필요가 있어서 ISO 646 표준이 만들어졌습니다.
:
: 자세한 내용은 다음 링크를 참고하시구요.
: http://czyborra.com/charsets/iso646.html
:
: 어쨌든... 우리같이 아예 7비트로는 아무것도 표기가 안되는 아시아권과는 아무런 상관이 없는
: 표준입니다. 영어권이 아닌 유럽넘들을 위한 거죠.
:
: 물론 gcc에도 이 헤더파일들이 있습니다.
: gcc에서 명시적인 인클루드 없이 컴파일이 된다면, 아마도 기본으로 인클루드되는 모양이네요.
:
: 그럼...
:
:
김재구 [knis001]   2002-09-12 22:41 X
advanced compiler 옵션에서 language compliance를 anisi로 맞추어주면 헤더파일 없어도 키워드로 인식하는군요. ^^
김재구 [knis001]   2002-09-12 22:44 X
인터넷에서 조금 뒤져보니까, 왠만해서는 디폴트모드로 대체표기가 disable되는 모양입니다.
김재구 [knis001]   2002-09-12 22:46 X
그리고 C++표준인 것은 맞습니다.
김재구 [knis001]   2002-09-12 23:04 X
ISO-C에서는 헤더를 포함하는 것이 표준이고, C++에서는 아예 키워드가 된거죠.
김재구 [knis001]   2002-09-12 23:07 X
다시말해 C에서는 iso646.h가 표준헤더파일이 된거죠. ^^
김재구 [knis001]   2002-09-12 23:20 X
그런데 ANSI 호환으로 놓으면,vcl을 사용하지 못하는군요  __closure __classid등의 확장키워드가 모두 undefined로 나오네요. 당연한건가.. ^^

+ -

관련 글 리스트
5733 C++ 빌더는 ANSI C++ 표준을 준수하는가?? Daniel 2213 2002/09/12
5738     [참고] C++Builder 6 Plum Hall test suite results 김상구.패패루 1702 2002/09/12
5739         [참고] C/C++ Users Journal 테스트 결과 Daniel 2312 2002/09/12
5736     iso646.h 파일을 인클루드 하세요. 박지훈.임프 2126 2002/09/12
5737         헤더 화일을 포함시키는 것은 정당한 방법은 아니죠. Daniel 1982 2002/09/12
5740             표준에 대한 생각이 저와는 다른 듯... 박지훈.임프 1594 2002/09/13
5741                 표준안에 대한 첫 글을 쓴 목적은.... Daniel 1524 2002/09/13
5742                     Re:표준안에 대한 첫 글을 쓴 목적은.... 박지훈.임프 1834 2002/09/13
5735     Re: not_eq만 지원 안하는것 같군요 김상구.패패루 1496 2002/09/12
5734     참고 : Alternative Tokens(digraph), Alternate punctuation token Daniel 1841 2002/09/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.