[일반]#pragma once 와 #pragma comment()
- Language/C
- 2008. 7. 8.
#pragma 는 #로 시작하는 Precompiler(전처리구문) 지시자 중 하나이다.
컴파일러에 종속적인 명령으로, 컴파일러에 직접 정보를 전하기 위해 사용하는데,
컴파일러에 종속적이기 때문에 컴파일러를 변경했을 경우 실행을 보장하진 못한다.
#pragma 명령어 중 자주 쓰이는 once 와 comment() 에 대해서 알아보자.
1. #pragma once
#pragma once 는 c의 헤더 파일 최상단에서 자주 볼 수 있는데, 컴파일러에게 해당
헤더 파일이 한번만 빌드되도록 알려주는 명령이다. 즉, 여러 번 인클루드 되는 것을
컴파일러 차원에서 막아주게 된다.
예를 들어, A.h라는 파일이 여러 곳에서 복잡하게 #include 되어 쓰이게 된다면 그때마다
각각 정의가 추가되게 되어 중첩되는 경우가 생긴다. 이 경우 중복 정의되었다는 에러가
발생하게 된다.
즉, 같은 내용이 여러번 빌드되게 되는것을 막기위해 #pragma once 를 사용하는 것이다.
참고:
중복 정의에 대한 에러를 막기 위해 #ifndef 문을 써도 된다.
사용 예) 헤더파일 부분에
#ifndef _A
#define _A
//헤더파일 내용
#endif
2. #pragma comment()
#pragma comment()로 사용할 수 있는 명령은 여러 개가 있는데, 그 중 가장 대표적인 것이
#pragma comment(lib, "*.lib") 로, 해당 라이브러리를 링크시켜준다.
예를 들어, VC++6.0에서 DirectDraw를 사용하기 위해서는 Project >> Settings 의
Link 탭으로 이동하여 Object/library modules 항목란에 ddraw.lib 와 dxguid.lib를 적어
넣어 lib 파일을 링크해 줘야 한다.
하지만,
#pragma comment(lib, "dxguid.lib")
#pragma comment(lib, "ddraw.lib")
와 같이 소스코드 내에서 명시적으로 지정을 하면, Project >> Settings ...의 과정을 거치지
않고도 라이브러리를 링크할 수가 있는 것이다.
[출처] [일반]#pragma once 와 #pragma comment()|작성자 낭만오리
'Language > C' 카테고리의 다른 글
숫자를 문자열로 변환! (0) | 2009.12.09 |
---|---|
C언어에서 #ifdef와 #endef 의 뜻이 뭔가요? (0) | 2009.11.03 |
C언어] 10진수 2진수 진법 변환, 이진수 출력 함수: Decimal to Binary (base-2) (0) | 2008.10.12 |
memmove() (0) | 2008.10.07 |
[Programming] 정수형보다 큰수를 출력하구 싶어요~ (0) | 2008.04.03 |