2011-07-08 6 views

答えて

3

それはここで答えたConditional "pragma omp"

C99は、あなたがそうでなければ#pragma内部のマクロであるもの配置することができます_Pragmaキーワードを持っていたよう。

#define OMP_PARA_INTERNAL _Pragma("omp parallel for") 

ので、何かのように

いくつか_Pragma sが例えば、単項演算子として組み合わせることができる

#define OMP_PARA_FOR _Pragma("omp for") 
#define A() { \ 
...a lot of code... \ 
OMP_PARA_FOR  \ 
for(..)    \ 
    ..do_for..   \ 
...another a lot of code \ 
} 
:私はGCCコンパイラを使用してい

_Pragma("first pragma") _Pragma("Second pragma") 
2

のVisual Studioでは、かわりに#pragma__pragmaキーワードを使用することができます。残念ながら、これは標準ではないので、別のコンパイラを使用している場合は、コンパイラが何か類似したものをサポートしているかどうかを判断する必要があります。

+0

、ここのようなものです'__pragma'キーワード? – osgx

1

マクロ内の#に別の意味があります(引用符(#somevar)または連結変数(onevar ## anothervar)を追加することはできません)。 関数呼び出しの代わりにインプレースをインクルードするより複雑なコードがある場合は、ローカル関数を使用してinlineキーワードを追加すると、マクロがインライン展開されるようにインライン化されます。パラメータとして(ポインタや参照として)内部で使用される変数を確実に渡すだけで十分です。代わりに、#includeを使用して、マクロコードのみを含むコードファイルを含めることができます。

関連する問題