可能重複:
C/C++ pragma in define macro
Conditional 「pragma omp」使用內部的#define將OpenMP編譯
我如何使用OpenMP編譯宏定義裏面?例如。
#define A() { \
...a lot of code... \
#pragma omp for \
for(..) \
..do_for.. \
...another a lot of code \
}
可能重複:
C/C++ pragma in define macro
Conditional 「pragma omp」使用內部的#define將OpenMP編譯
我如何使用OpenMP編譯宏定義裏面?例如。
#define A() { \
...a lot of code... \
#pragma omp for \
for(..) \
..do_for.. \
...another a lot of code \
}
由於這是在這裏找到答案Conditional "pragma omp"
C99具有
_Pragma
關鍵字,可以讓你把什麼否則將#pragma
內宏。喜歡的東西
#define OMP_PARA_INTERNAL _Pragma("omp parallel for")
所以,
#define OMP_PARA_FOR _Pragma("omp for")
#define A() { \
...a lot of code... \
OMP_PARA_FOR \
for(..) \
..do_for.. \
...another a lot of code \
}
幾個_Pragma
s時,可以合併爲一元運算符,如:
_Pragma("first pragma") _Pragma("Second pragma")
在Visual Studio中您可以使用__pragma
關鍵字來代替#pragma
。不幸的是,這是非標準的,所以如果你使用的是其他編譯器,你必須弄清楚你的編譯器是否支持類似的東西。
你不能因爲#
裏面的宏有另一個含義(要加引號(#somevar
)或連接變量(onevar ## anothervar
))。 如果您想要包含更復雜的代碼,而不是函數調用,請使用本地函數並添加關鍵字inline
,以便內聯宏,因爲它是內聯的。你只需要確保你傳遞裏面使用的變量作爲參數(如指針或引用)。作爲替代,您可以使用#include
僅包含一個包含您的宏代碼的代碼文件。
我使用GCC編譯器,在這裏像'__pragma'關鍵字? – osgx