8

_PragmaVisual C++ にANSI C 演算子のようなものはありますか?

たとえば、次のマクロを定義しようとしています。

#ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x) _Pragma (#x)
#else  // #ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x)
#endif  // #ifdef _OPENMP

#pragma omp ...したがって、古い GCC コンパイラで不明なコンパイラの警告を回避できます。VisualC++ で利用できる同様の手段はありますか?

4

1 に答える 1

7

はい。ただし、2 つのアンダースコアです。__pragma

プラグマがどのように機能するかはわかりませんが、VC++ のプラグマompを使用した例を次に示します。optimize

#define PRAGMA_OPTIMIZE_OFF __pragma(optimize("", off))

// These two lines are equivalent
#pragma optimize("", off)
PRAGMA_OPTIMIZE_OFF

編集:ompプラグマは次のようにも使用できることを確認しました:

#define OMP_PARALLEL_FOR __pragma(omp parallel for)

したがって、はい、次のように定義されている場合、マクロは機能するはずです (元のコードでは文字列化演算子が誤って使用されていることに注意してください#x

#ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x) __pragma (x)
#else  // #ifdef _OPENMP
#define PRAGMA_IF_OPENMP(x)
#endif  // #ifdef _OPENMP
于 2011-01-24T12:49:49.717 に答える