pragma 란 무엇인가?
#pragma는 define 이나 include와 같이 #으로 시작하는 전처리(precompiler) 구문의 하나이다.
1. #pragma once
- 컴파일러에게 한번만 컴파일 하라고 알려준다. 예전에는 #define으로 각헤더에서 최초
구동시 값을 정의 하게 하는 방법으로 해결했지만 근래에는 한 줄로 해결 합니다.
- #define 으로 같은 효과내기.
#if !defined (_IS_THIS_HEADER_INCLUDED)
#define _IS_THIS_HEADER_INCLUDED
#endif
2. #pragma comment()
- 기본 형식 : #prgma comment( comment-type, comment string? ) [] 안의 구문은
comment-type에 따라 필요할 경우 사용함.
- comment type : compiler, exestr, lib, linker, user 등이 온다.
- 설정방법 :
1) subsystem 설정방법.
#pragma comment(linker, "/subsystem:windows")
#pragme comment(linker, "/subsystem:console")
2) section 의 설정(공유메모리사용)
#pragma comment(linker, "SECTION :.SHAREDATA, RWS")
#pragma data_seg("SHAREDATA")와 함께 사용하여 공유 메모리를
생성한다. 위의 명령어 대신 def 파일안에 아래와 같이 해 주어도 된다.
SECTIONS
SHAREDATA READ WRITE SHARED
3) 명시적인 라이브러리 링크 (사용자 정의형 링크의 경우 추가적인 라이브러리 링크 경로를 설정해 줍니다)
#pragma comment(lib, "Mylib.lib")
4) 자세한 내용은 MSDN을 참조하세요~~ㅎ
3. #pragma data_seg()
- 기본 형식 : #pragma data_seg( ["section-name"[, "section-class"] ] ),
[]는 사용하지 않아도 됨.
- 예) DLL에서 Data 공유할 때 사용합니다. 하나의 DLL 파일에서 여러번 메모리에 로딩이 되더라도 하나의 메모리 영역에서 데이터가 공유됩니다.
#pragma data_seg("SHAREDATA")
int x;
char y;
CSharedClass sharedClass = {0};
#pragma data_seg()
- 위와 같이 사용하려면 반드시 섹션을 설정해 주어야한다.
4. #pragma warning
- 기본 형식
#pragma warning( warning-specifier : warning-number-list [; warning-specifier :
warning-number-list...] )
#pragma warning( push[,n] )
#pragma warning( pop )
- 보편적인 사용법
#pragma warning(disable:4996)
5. #pragma message()
- 컴파일중에 메시지를 뿌리기 위함.
- 예) #pragma message(" ")
반응형
'IT-개발,DB' 카테고리의 다른 글
[개발/VC++] warning LNK4098: 'libcmt.lib' defaultlib가 다른 라이브러리와 충돌합니다 (0) | 2012.01.02 |
---|---|
[개발/C++] error LNK2019: __imp__PathRemoveFileSpecA@4 외부 기호 (0) | 2011.12.28 |
[개발/VC++] Message: 'This function or variable may be unsafe. Consider using wcsncpy_s instead (0) | 2011.12.28 |
[개발/mfc] 휴지통 용량 및 비우기 (0) | 2011.12.22 |
[개발/vc++] 인터넷 임시파일 삭제 (0) | 2011.12.22 |
댓글