본문 바로가기

C++

C++ pragma

c++에서 pragma는 compiler에게 어떤 동작을 정해주기 위해서 사용한다. 

 지정 형식은 아래와 같다. 

#pragma token-string __pragma(token-string)


token-string 부분에 전달해줄 동작을 명시해 주면 된다. 


예를 들어 once라는 string을 전달하는 예는 아래와 같다. 

// header.h
#pragma once
....



컴파일러는 이를 해석해서 소스를 컴파일 할때 이 header파일을 한번만 include한다. 
이 pragma를 사용하면 컴파일러가 hearder.h파일을 한번만 열고 읽기 때문에 빌드를 하는시간을 줄일 수 있다. 

Msdn의 once관련 설명 페이지 (http://msdn.microsoft.com/ko-kr/library/4141z1cx.aspx)


이밖에도 여러가지 token-string을 사용할 수 있는데 목록은 아래와 같다. 

alloc_text

auto_inline

bss_seg

check_stack

code_seg

comment

component

conform 1

const_seg

data_seg

deprecated

detect_mismatch

fenv_access

float_control

fp_contract

function

hdrstop

include_alias

init_seg 1

inline_depth

inline_recursion

intrinsic

make_public

managed

message

omp

once

optimize

pack

pointers_to_members 1

pop_macro

push_macro

region, endregion

runtime_checks

section

setlocale

strict_gs_check

unmanaged

vtordisp 1

warning

 

오른쪽 옆에 1이  적혀있는것은 c++ 컴파일러에서만 동작하는 것이다. 

이외에 지정되지 않는 스트링을 전달하거나 해석하지 못하는 컴파일러의 경우는 warning을 나타내고 계속 컴파일을 진행한다. 

pragma 관련 keyword 설명 페이지 ( http://msdn.microsoft.com/ko-kr/library/d9x1s805.aspx )