#pragma warning
只对当前文件有效(对于
.h
,对包含它的
cpp
也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用
该指令允许有选择性的修改编译器的警告消息的行为
指令格式如下:
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]
#pragma warning( push[ ,n ] )
#pragma warning( pop )
主要用到的警告表示有如下几个:
once:只显示一次(警告/错误等)消息
default:重置编译器的警告行为到默认状态
1,2,3,4:四个警告级别
disable:禁止指定的警告信息
error:将指定的警告信息作为错误报告
如果大家对上面的解释不是很理解,可以参考一下下面的例子及说明
#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 warning 也支持如下格式:
#pragma warning( push [ ,n ] )
#pragma warning( pop )
这里n代表一个警告等级(1---4)。
#pragma warning( push )保存所有警告信息的现有的警告状态。
#pragma warning( push, n)保存所有警告信息的现有的警告状态,并且把全局警告
等级设定为n。
#pragma warning( pop )向栈中弹出最后一个警告信息,在入栈和出栈之间所作的
一切改动取消。例如:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
#pragma warning( pop )
在这段代码的最后,重新保存所有的警告信息(包括4705,4706和4707)
在使用标准C++进行编程的时候经常会得到很多的警告信息,而这些警告信息都是不必要的提示,
所以我们可以使用#pragma warning(disable:4786)来禁止该类型的警告
在vc中使用ADO的时候也会得到不必要的警告信息,这个时候我们可以通过
#pragma warning(disable:4146)来消除该类型的警告信息
转自:http://www.cnblogs.com/xiaoyixy/archive/2006/04/12/372770.html
分享到:
相关推荐
`#pragma once`是一个非常实用的指令,它可以确保包含该指令的头文件在整个编译单元中仅被包含一次。这相当于使用传统的`#ifndef`、`#define`和`#endif`组合来避免重复包含问题,但在现代IDE中更受欢迎且易于阅读。 ...
### VC中的`#pragma`指令详解 在C/C++编程中,`#pragma`指令是一种预处理器指令,被广泛应用于Microsoft Visual C++(VC)编译器中,用于控制编译器的行为,如代码布局、警告信息管理、资源管理等。下面我们将详细...
这条指令实际上在 VC6 中就已经有了,但是考虑到兼容性并没有太多的使用它。 (4) `hdrstop` 参数 `hdrstop` 参数表示预编译头文件到此为止,后面的头文件不进行预编译。 ```c #pragma hdrstop ``` BCB 可以预编译...
这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用它。 4. #Pragma hdrstop参数 #Pragma hdrstop参数表示预编译头文件到此为止,后面的头文件不进行预编译。BCB可以预编译头文件以加快链接的...
pragma once 指令只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在 VC6 中就已经有了,但是考虑到兼容性并没有太多的使用它。 4. #pragma hdrstop pragma hdrstop 指令表示预编译...
在VC编译器中,`#pragma`指令是一种非常强大的预处理器指令,允许程序员以编译器特有的方式控制编译行为,而不会破坏C或C++语言的兼容性。 #### 二、`#pragma`指令详解 `#pragma`指令的一般格式为`#pragma Para`,...
这个指令可以添加注释到编译后的对象文件或可执行文件中,还可以用来链接库文件,如`#pragma comment(lib, "library.lib")`会自动将指定的库文件加入链接阶段。 预编译头文件(通常命名为`stdafx.h`和`stdafx.cpp`...
- `#pragma warning`:控制警告级别和行为,例如禁用特定警告、将警告视为错误等。 这些指令和宏在VC++ MFC开发中扮演着关键角色,合理使用它们可以提升代码质量,减少错误,提高开发效率。熟悉并掌握这些基础知识...
在给定的描述中提到的“#program”应理解为“#pragma”,它是C和C++语言中用于控制编译器行为的一种预处理器指令。本文将深入探讨#pragma指令的用法及其如何帮助程序员更有效地管理和优化代码。 1. **#pragma ...
在VC MFC(Microsoft Visual C++ with Microsoft Foundation Classes)开发中,掌握常用的宏和指令对于提高代码质量和开发效率至关重要。下面将详细介绍这些宏和指令的具体含义及其应用场景。 #### 1. `#include` ...
在VC6中就已经存在,但由于兼容性问题,使用时需谨慎。 `#pragma hdrstop`用于指示预编译头文件的结束,防止后续的头文件被包含到预编译头中,这有助于控制预编译头文件的大小,尤其是在大型项目中。 `#pragma ...
解决C4503警告的方法是在头文件中添加一条#pragma指令来禁用这个警告。如下所示: ```cpp #pragma warning(disable:4503) ``` 这行代码告诉编译器在当前作用域内忽略所有C4503警告。然而,需要注意的是,虽然这样...
- 在 `stdafx.h` 文件中,通过预编译指令在 `#endif // _AFX_NO_AFXCMN_SUPPORT` 与 `//{{AFX_INSERT_LOCATION}}` 之间插入以下代码: ```cpp #define AUTO_SUBCLASS #define MFCX_PROJ #include extern ...
在某些情况下,可以通过预处理器指令`#pragma warning(disable:xxxx)`来禁用特定的警告,但这应谨慎使用,因为它可能会掩盖潜在的问题。 ### 5. 视觉C++2005的其他变化 除了上述提到的显著变化外,Visual C++ 2005...
- 使用`#pragma comment(lib, "core.lib")`和`#pragma comment(lib, "standard.lib")`指令告诉编译器链接这两个库文件。 #### 五、示例代码 ```cpp #include #include "lua.h" #include "lualib.h" #include ...
- **Disable Language Extensions**:可以禁用部分C++语言特性,比如消除重复字符串,通过预处理器指令`#pragma pack`控制结构成员对齐方式,以优化内存布局和访问速度。 - **Eliminate Duplicate Strings**:如果...
- `#pragma warning(disable:4996)` 用于关闭编译器的特定警告。 - `#pragma comment(lib, "Winmm.lib")` 链接指定的库。 在编写贪吃蛇游戏的过程中,还需要掌握基本的C语言语法,如循环、条件语句、指针操作等。...