C++11 - _Pragma 전처리 연산자
개요
C99 에서 도입된 전처리 연산자 이다.
_Pragma 연산자는 매크로에서 처리 계 정의 기능을 사용하기위한 기능이다.
처리 계 정의 기능을 사용하기 위해 기존에는 #pragma 지시자를 사용하여 왔지만 이 기능은 매크로 내에서는 사용할 수 없다.
#pragma 지시자를 매크로 내에서 사용할 수 있다.
사용법
문법
_Pragma (문자열 리터럴)
처리 결과의 프리 프로세서 토큰 시퀸스는 #progrma 지시자로 지정한 경우와 같이 처리된다.
코드 1
OpenMP를 사용하기 위해서는
#pragma omp parallel for
가 필요하다. 문제는 위의 구문을 매크로에서는 사용할 수 없다.
#define OMP_PARALLEL_FOR #pragma omp parallel for // 에러
그러나 _Pragma 연산자를 사용하면 매크로에서 사용할 수 있다.
#define OMP_PARALLEL_FOR _Pragma("omp parallel for")
OMP_PARALLEL_FOR
for (int i = 0; i < N; ++i) {
c[i] = a[i] + b[i];
}
코드 2
#pragma comment(copyright, "IBM 2010")
는 아래는 같다
_Pragma("comment(copyright, \"IBM 2010\")")
사용 예
_Pragma("comment(copyright, \"IBM 2010\")")
int main()
{
return 0;
}
참고
VC++ 전용의 __pragma() 키워드가 있는데 이것이 _Pragma와 비슷하다.
- https://msdn.microsoft.com/ko-kr/library/d9x1s805.aspx
출처
- http://en.cppreference.com/w/cpp/preprocessor/impl
- https://cpprefjp.github.io/lang/cpp11/pragma_operator.html
- http://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.cbclx01/c99preprocessor.htm
이 글은 2016-12-22에 작성되었습니다.