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에 작성되었습니다.