VC编译器使用技巧、警告和错误解决办法等杂项

来源:互联网 发布:网上买书的软件 编辑:程序博客网 时间:2024/06/06 03:48

1按警告或错误代码编号分类:

C2712:
error C2712: Cannot use __try in functions that require object unwinding
handle:  Menu->Project->Property --> C/C++->Command Line  --> Additional options:  /EHs  /EHc


2.编译器使用技巧:


2.1 与#pragma相关


2.1.1#pragma warning

作用:处理与编译警告有关的信息
语法:
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]#pragma warning( push[ ,n ] )#pragma warning( pop )
其中warning-specifier主要有3个:
1)once//某个警告只显示一次
2)disable//禁止制定的警告信息
3)error//将一个指定的警告信息编号作为错误处理
示例:
1)主语法:
#pragma warning(disable:4507 34)  // 不显示4507和34号警告信息  #pragma warning(once:4385)        // 4385号警告信息仅报告一次  #pragma warning(error:164)        // 把164号警告信息作为一个错误。  
2)工程应用: //取消某些头文件中的警告信息
#pragma warning(push)#pragma warning(disable: 4819)  // We won't fix code page issue in 3rd party's header file, just ignore it here#include "Environ.h"#include "PICommon.h"#pragma warning(pop)
其中:
#pragma warning( push )保存所有警告信息的现有的警告状态。  
#pragma warning( push, n)保存所有警告信息的现有的警告状态,并且把全局警告等级设定为n。   
#pragma warning( pop )向栈中弹出最后一个警告信息,在入栈和出栈之间所作的一切改动取消。

2.1.2#pragma message 

用法:#pragma message("Some Message You Want")
作用:在程序编译时编译时输出此字符串,对于源代码信息的控制是非常重要。比如:当我们不知道是否使用某个宏时,可在判断此宏后使用此项目,如果输出了表明此宏被使用。
例如:
 #ifdef _X86   #pragma message("_X86 macro activated!")   #endif  

2.1.3 #pragma once

作用:只要在头文件的最开始加入这条指令就能够保证头文件被编译一次

2.1.4#pragma comment(...)

作用:将注释记录放入当前文件或者可执行文件中
语法:
 #pragma comment( "comment-type" [, commentstring] )

示例:(常用)
#pragma comment(lib, "abc.lib")//将abc.lib加入本工程