Soft Ware/C++ 언어!!

#pragma 에 대해서 ^^ 어느분 블러그에서 가지고 왔습니다

달려가보자 2012. 1. 27. 21:17

#pragma는 Precompiler, 즉 전처리기로서 컴파일 하기 이전에 해당 명령을 처리해주는 명령어이다.

#pragma once : 해당 소스가 한번만 포함되게 한다.
→ #ifndef와 같이 소스가 여러번 포함되는 것을 방지한다.

#pragma pack : 구조체의 정렬방식을 지정한다.
##옵션
pack(n) : n으로 정렬 방식을 바꾼다.
ex) #pragma pack(1) // 1byte 단위 정렬 사용

default : default 정렬 방식 사용. 4byte 단위 정렬 사용.
pack(push, n) : n으로 정렬 방식을 바꾸고, 기존 정렬 방식은 스택에 저장한다.
pop : 스택에 저장해두었던 정렬방식으로 되돌린다.

#pragma comment(lib, "링크명.lib") : 해당 dll이나 라이브버리를 링커에 포함시키도록 한다.

#pragma optimize("옵션", on/off) : 함수 밖에 선언되며 pragma가 선언된 후 정의된 첫 번째 함수에 영향을 미친다.
##옵션
-g : 전역 최적화 옵션을 활성
-p : Floating Point의 Consistency를 향상시킨다.
-y : 프로그램 스택의 프레임 포인터를 일반화 시킨다.
ex) #pragma optimize("", on) : 모든 옵션 활성화


#pragma optimize("tp", off) : t, p 옵션 off.

#pragma intrinsic(함수명1, 함수명2) : 해당 함수를 호출 시 function call이 아닌 inline 형식으로 코드 자체를 함수가 사용하는 장소에 삽입시켜 최적화를 시킨다.

#pragma function(함수명1, 함수명2) : 해당 함수를 function call 형태로 구현되도록 지시한다.

#pragma region & endregion : 멤버함수나 변수들을 일정하게 분류시켜준다. 해당 영역을 줄이거나 확장시켜 코드의 가독성을 높일 수 있다.
ex) #pragma region blahblah
#pragma endregion blahblah

#pragma data_seg : dll에서 데이터를 공유하고자 할 때 사용한다.

#pragma warning : 컴파일시 나오는 경고를 설정한다.
##옵션
once, default, error, level, push, pop 등.

#pragma message( . ) : 컴파일 시 특정 문장을 표시하게 한다.

link : http://msdn.microsoft.com/ko-kr/library/h7k3a0bw.aspx
link : http://blog.naver.com/kkpa1002 ; 이상과 모리님 블로그.

[출처] [C++] #pragma|작성자 에스이오케이