|
#pragma 란 결국 C++ 의 언어 구조가 아닌 C++ 컴파일러의 하나의 option 사항 입니다.
즉 C++ 의 구조는 모두 같지만 컴파일러는 서로 다르고 또한 각 컴파일러마다 각자의 독특한 기능을
구현해주기 위한 source code로의 입력이 필요한 포멧이 바로 #pragma 이니까요..
#define 문으로 처리하시는게 호환성 면에서 좋을듯 하군요.
어짜피 전처리 문들이기 때문에 컴파일 속도는 별로 영향을 주지 않을듯 합니다.
김태선 님이 쓰신 글 :
: #pragma once
: 이건 MS VC++에서만 사용하는 겁니다.
:
: 볼랜드에 이거 추가해달라고 데모하면 해주겠지만
: 데모인원 부족으로.... ㅡ..ㅡ;
:
: : #ifndef _TEST_
: : #define _TEST
: : #endif
: 이렇게 하셔야 합니다.
: 하지만 컴파일 속도는 VC++보다 조금도 느리지 않습니다.
: 오히려 아주 쬐금 더 빠릅니다.
: 단 한차례도 컴파일속도가 MS보다 느린 적이 없었습니다.
: 컴파일 속도에 대한 자신이 있기 때문에 MS가 정의한 의사명령을 지원하지 않은 거겠죠.
:
:
:
: 김현중 님이 쓰신 글 :
: : 안녕하세요. vc++ 에서 작업중이던 내용을 C++ Builder 6 로 컨버팅중입니다.
: :
: : vc 에선, 헤더파일에 초기에
: : #pragma once
: : 명령어를 넣어줌으로써 헤더파일 중복을 피할 수 잇었는데요.
: :
: : 씨빌더에선 #pragma once 가 동작하질 않는듯 싶어서요.
: : 컴파일 오류는 없으나, 중복 정의 에러가 납니다.
: :
: : (E2238 Multiple declaration for 'xxxx')
: : (E2344 Earlier declaration of 'xxxx')
: :
: : 결국 일일히 전부
: : #ifndef _TEST_
: : #define _TEST
: : #endif
: :
: : 이런 형태로 중복을 막고 있습니다만..
: :
: : #pragma once 가 ms 에서만 지원하는건가요??
: : 사용할 수 있는 방법은 없을까요? 코드가 지저분해지는거 같아서요 ^^;;
: : 답변 부탁드리겠습니다~
|