1、#pragma
#pragma warning
#pragma warning(disable:4507 34;once:4385;error:164)
等价于:
#pragma warning(disable:4507 34)//不显示4507和34号警告信息
#pragma warning(once:4385)//4385号警告信息仅报告一次
#pragma warning(error:164)//把164号警告信息作为一个错误
#pragma comment
#pragma comment( "comment-type" [, commentstring] )
该指令将一个注释记录放入一个对象文件或可执行文件中
comment-type(注释类型):可以指定为五种预定义的标识符的其中一种,五种预定义的标识符为:compiler:将编译器的版本号和名称放入目标文件中,本条注释记录将被编译器忽略。如果你为该记录类型提供了commentstring参数,编译器将会产生一个警告。例如:#pragma comment( compiler )
exestr: 将commentstring参数放入目标文件中,在链接的时候这个字符串将被放入到可执行文件中,当操作系统加载可执行文件的时候 ,该参数字符串不会被加载到内存中。但是,该字符串可以被dumpbin之类的程序查找出并打印出来,你可以用这个标识符将版本号码之类的信息嵌入到可执行文件中!
lib: 这是一个非常常用的关键字,用来将一个库文件链接到目标文件中常用的lib关键字,可以帮我们连入一个库文件。
user: 将一般的注释信息放入目标文件中commentstring参数包含注释的文本信息,这个注释记录将被链接器忽略
linker:指定一个连接选项,这样就不用在命令行输入或者在开发环境中设置了。
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"Ws2_32.lib")
参考链接:
论#pragma comment和winmm.lib函数(为什么palysound出现错误原因)
2、_T()
1、_T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式
如果你定义了UNICODE,那么_T宏会把字符串前面加一个L。这时 _T(“ABCD”) 相当于 L”ABCD” ,这是宽字符串。
如果没有定义,那么_T宏不会在字符串前面加那个L,_T(“ABCD”) 就等价于 “ABCD”
参考: