pragma用法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pragma用法

#pragma的用法? 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #pragma? para。其中para为参数,下面来看一些常用的参数。?1)message 参数??? message参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:????? #pragma? message(消息文本)????? 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。????? 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏,可以用下面的方法:??? #ifdef? _X86????? #pragma? message(_X86? macro? activated!)????? #endif????? 我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示_86? macro? activated!。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了。????????(2)另一个使用得比较多的pragma参数是code_seg??? 格式如:????? #pragma? code_seg( [section-name [, section-class] ] )????? 它能够设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到它。???(3)#pragma once? (比较常用)???? 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用它。????????(4)#pragma? hdrstop??? 表示预编译头文件到此为止,后面的头文件不进行预编译。BCB可以预编译头文件以加快链接的速度,但如果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文件。??????? 有时单元之间有依赖关系,比如单元A依赖单元B,所以单元B要先于单元A编译。你可以用#pragma? startup指定编译优先级,如果使用了#pragma? package(smart_init),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 )保存所有警告信息的现有的警告状态,并且把全局警告等级设定为n。??????? #pragma? warning( pop )向栈中弹出最后一个警告信息,在入栈和出栈之间所作的一切改动取消。例如:????? #pragma? warning( push )????? #pragma? warning( disable: 4705 )????? #pragma? warning( disable: 4706 )????? #pragma? warning( disable: 4707 )????? //.......????? #pragma? warning(? pop? )??????? 在这段代码的最后,重新保存

文档评论(0)

135****6041 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档