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_VER或._MSV_VER__FILE____DATE__

这些宏已定义,它们记录在msdn上

4

1 回答 1

3

我认为#pragma message只需要 C 字符串。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 回答