我想知道为什么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
上答案 0 :(得分: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输出窗格中的消息并将其转到其文件/行。)