- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c预编译命令
在所有的预处理指令中,#Pragma ? 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 ? ? ? ? 其格式一般为: ? #Pragma ? Para ? ? 其中Para ? 为参数,下面来看一些常用的参数。 ? ? ? ? (1)message ? 参数。 ? Message ? 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: ? ? #Pragma ? message(“消息文本”) ? ? 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 ? ? 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。 ? ? 假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 ? ? #ifdef ? _X86 ? ? #Pragma ? message(“_X86 ? macro ? activated!”) ? ? #endif ? ? 当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_ X86 ? 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 ? ) ?
您可能关注的文档
- 理论语言学第二章3.ppt
- 理论计算机1级考试理论知识.doc
- 理货员培训教材.doc
- 琼州学院 社会实践论文格式模板.doc
- 理论1-VB基础.ppt
- 瑞合庄桥梁监理规划.doc
- 瓦斯隧道管理.doc
- 甘肃省实施《中华人民共和国消防法》知识大奖赛试题.doc
- 瓷砖项目可行性研究报告.doc
- 生产经营单位安全培训要求.ppt
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)