0

次のコードを使用すると、Visual C++ コンパイラで警告/エラーが発生する理由を知りたいです。

#pragma message( "You have " _MSC_FULL_VER )

ここに私が得るものがあります:

error C2220: warning treated as error - no 'object' file generated
warning C4081: expected ':'; found ')'

問題は_MSC_FULL_VERorで再現しますが、 or_MSV_VERのような他のものを使用しようとすると再現しません。__FILE____DATE__

これらのマクロは定義されており、msdnで文書化されています

4

1 に答える 1

3

#pragma messageC文字列だけが必要だと思います。IIRC_MSC_FULL_VERは数値であり、__FILE__および__DATE__はC文字列です。これを試して

// BEWARE! Untested macro hackery ahead!
#define STRINGIFY( L )       #L
#define MAKESTRING( M, L )   M(L)
#define STRINGIZE(X)         MAKESTRING( STRINGIFY, X )
#pragma message( "You have " STRINGIZE(_MSC_FULL_VER) )

(ちなみに、これにより

#define SHOWORIGIN            __FILE__ "(" STRINGIZE(__LINE__) "): "
#pragma message( SHOWORIGIN "your message here" )

これにより、VSの出力ペインでメッセージをダブルクリックして、そのファイル/行に移動できます。)

于 2010-03-17T20:03:38.597 に答える