#pragma 各种用法

news/2024/6/29 12:02:11 标签: 编译器, x86, 磁盘, 语言, c
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="htmledit_views">

1.color: #ff0000;">屏蔽 color: red;">编译时期的warning࿰c;对以连接警告并不能屏蔽因为 #pragma是编译预处理指令࿰c;设定class="tags" href="/tags/BianYiQi.html" title=编译器>编译器的状态或指示class="tags" href="/tags/BianYiQi.html" title=编译器>编译器的动作࿰c;当然只对编译过程起作用了。

color: #ff0000;"> 例如  
  编译时的警告:  
  Compiling...  
  aadd.cpp  
  D:/atvc/aadd/aadd.cpp(12)   :   warning   color: #ff0000;">C4244:   'initializing'   :   conversion   from   'double'   to   'int',   possible   loss   of   data  
屏蔽警告信息如下:  
  #pragma   warning   (   disable   :   color: #ff0000;">4244   )     //可以屏蔽warning   C4244 
注意: 这句话必须在引用头文件之前 

cns!48C02BAA1CD51400!235" class="beTitle">解析#pragma指令

cns!48C02BAA1CD51400!235" class="bvMsg">
转自CSDN

在所有的预处理指令中࿰c;#Pragma 指令可能是最复杂的了࿰c;它的作用是设定class="tags" href="/tags/BianYiQi.html" title=编译器>编译器的状态或者是指示class="tags" href="/tags/BianYiQi.html" title=编译器>编译器完成一些特定的动作。#pragma指令对每个class="tags" href="/tags/BianYiQi.html" title=编译器>编译器给出了一个方法,在保持与C和C++class="tags" href="/tags/YuYan.html" title=语言>语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个class="tags" href="/tags/BianYiQi.html" title=编译器>编译器都是不同的。
其格式一般为: #Pragma Para
其中Para 为参数࿰c;下面来看一些常用的参数。

(1)message 参数。 Message 参数是我最喜欢的一个参数࿰c;它能够在编译信息输出窗
口中输出相应的信息࿰c;这对于源代码信息的控制是非常重要的。其使用方法为:
#Pragma message(“消息文本”)
class="tags" href="/tags/BianYiQi.html" title=编译器>编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。
当我们在程序中定义了许多宏来控制源代码版本的时候࿰c;我们自己有可能都会忘记有没有正确的设置这些宏࿰c;此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法
#ifdef _X86
#Pragma message(“_X86 macro activated!”)
#endif
当我们定义了_X86这个宏以后࿰c;应用程序在编译时就会在编译输出窗口里显示“_
X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了


(2)另一个使用得比较多的pragma参数是code_seg。格式如:
#pragma code_seg( ["section-name"[,"section-class"] ] )
它能够设置程序中函数代码存放的代码段࿰c;当我们开发驱动程序的时候就会使用到它。

(3)#pragma once (比较常用)
只要在头文件的最开始加入这条指令就能够保证头文件被编译一次࿰c;这条指令实际上在VC6中就已经有了࿰c;但是考虑到兼容性并没有太多的使用它。

(4)#pragma hdrstop表示预编译头文件到此为止࿰c;后面的头文件不进行预编译。BCB可以预编译头文件以加快链接的速度࿰c;但如果所有头文件都进行预编译又可能占太多class="tags" href="/tags/CiPan.html" title=磁盘>磁盘空间࿰c;所以使用这个选项排除一些头文件。
有时单元之间有依赖关系࿰c;比如单元A依赖单元B࿰c;所以单元B要先于单元A编译。你可以用#pragma startup指定编译优先级࿰c;如果使用了#pragma package(smart_init) ࿰c;BCB就会根据优先级的大小先后编译。

(5)#pragma resource "*.dfm"表示把*.dfm文件中的资源加入工程。*.dfm中包括窗体
外观的定义。

(6)#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)保存所有警告信息的现有的警告状态࿰c;并且把全局警告
等级设定为n。
#pragma warning( pop )向栈中弹出最后一个警告信息࿰c;在入栈和出栈之间所作的
一切改动取消。例如:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
//.......
#pragma warning( pop )
在这段代码的最后࿰c;重新保存所有的警告信息(包括4705࿰c;4706和4707)。
(7)pragma comment(...)
该指令将一个注释记录放入一个对象文件或可执行文件中。
常用的lib关键字࿰c;可以帮我们连入一个库文件

 

cle>

http://www.niftyadmin.cn/n/1403914.html

相关文章

jQuery 元素尺寸

width() / height()取得四配元素宽度和高度值只算width / heightinnerWidth()/ innerHieght取得四配元素宽度和高度值包含paddingouterWidth()/ outerHeight()取得四配元素究度和高度值包含padding. borderouterWidth(true)! outerHeight(true)取得匹配元素宽度和高度值包含pad…

P2P原理的解释与实现

原文地址:http://www.cppblog.com/converse/archive/2006/09/02/11969.html 关于采用UDP协议进行打洞以进行P2P会话的原理,我本来想写一篇文章作说明,但是现在已经有一篇文章把原理性的东西解释清楚了,我在这里不再作这部分的重复,可以参见这里:P2P 之 UDP穿透NAT的…

http 下载

visual c网络通讯编程实用案例精选中 DWORD dwFlags; InternetGetConnectedState(&dwFlags, 0); CHAR strAgent[64]; sprintf(strAgent, "Agent%ld", timeGetTime()); HINTERNET hOpen; if(!(dwFlags & INTERNET_CONNECTION_PROXY)) hOpen InternetOpenA(s…

差分数组,经常在数组某段区间内统一进行加减相同值

假设某一数组d经常做在某一段区间[a,b]内统一进行加减的操作,由于每次进行操作都需要从a循环遍历到b,时间开销较大,所以可以采用差分数组来解决此类问题. 设数组d[]{8,1,3,6,5,4,2} 当需要在区间[0,3]上统一加3时,不采用循环的方式,而是新创建一数组c,初始每个下标上…

rem适配方案

文章目录rem适配方案rem实际开发适配方案rem适配方案技术使用(市场主流)技术方案1技术方案2(推荐)rem实际开发适配方案1rem媒体查询less技术1.设计稿常见尺寸宽度2.动态设置html标签font-size大小3.元素大小取值方法rem适配方案 1.让一些不能等比自适应的元素,达到当设备尺寸发…

js 轮播图中点击小圆圈图片跳到指定图片

html代码(部分) <div class"w"><div class"main"><!--焦点图模块--><div class"focus fl"><a href"javascript:;" class"arrow-l"><</a><a href"javascript:;" class…

7-3 树的同构 (25分)

7-3 树的同构 (25分) 给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2&#xff0c;则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的&#xff0c;因为我们把其中一棵树的结点A、B、G的左右孩子互换后&#xff0c;就得到另外一棵树。而图2就不是同构的…

MFC For WinCE不支持的类

这几天刚刚使用VS2005中的仿真器&#xff0c;来模块WINCE&#xff0c;用得很不习惯&#xff0c;也不顺利。将以前写的一些程序改成相应的版本&#xff0c;想看看能否运行&#xff0c;发现一堆问题。 先是字符串的处理。VS2005默认用UNICODE&#xff0c;故所有的字符串前都要加…