- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
pragma_once及其他PDF版本.pdf
#pragma once 及其他
2009-09-09 10:47
pragma 指令简介
在编写程序的时候,我们经常要用到#pragma 指令来设定编译器的状态或者是指示编译
器完成一些特定的动作。
一.message 参数
message 它能够在编译消息输出窗口中输出相应的消息,这对于源代码信息的控制非常
重要的,使用方法为:
#pragma message (“消息文本”)
当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定
义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,
此时我们可以用这条指令在编译的候进行检查,假设我们希望判断自己有没有源代码的什么
地方定义了_X86 这个宏可以用下面的方法:
#ifdef _x86
#pragma message(_x86 macro activated!)
#endif
当我们定义了_X86 这个宏以后,应用程序在编译时就会在编译输出窗口里显示_x86
macro activated! 。
二. 另一个使用得比较多的#pragma 参数是code_seg 。格式如:
#pragma code_seg([[{push|pop},][identifier,]][segment-name][,segment-class])
该指令用来指定函数在.obj 文件中存放的节,观察OBJ 文件可以使用VC 自带的dumpbin
命令行程序,函数在.obj 文件中默认的存放节
为.text 节
如果code_seg 没有带参数的话,则函数存放在.text 节中
push (可选参数) 将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或
者节名
pop(可选参数) 将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名
identifier (可选参数) 当使用push 指令时,为压入堆栈的记录指派的一个标识符,当该标
识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈
segment-name (可选参数) 表示函数存放的节名
例如:
//默认情况下,函数被存放在.text 节中
void func1() { // stored in .text
}
//将函数存放在.my_data1 节中
#pragma code_seg(.my_data1)
void func2() { // stored in my_data1
}
//r1 为标识符,将函数放入.my_data2 节中
#pragma code_seg(push, r1, .my_data2)
void func3() { // stored in my_data2
}
int main() {
}
三. #pragma once (比较常用)
这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编
译一次
#pragma once 用来防止某个头文件被多次include,#ifndef ,#define ,#endif 用来防止某
个宏被多次定义。
#pragma once 是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,
也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了。
#ifndef ,#define,#endif 这个是C++语言相关,这是C++语言中的宏定义,通过宏定义
避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平
台,最好使用这种方式
四. #pragma hdrstop 表示预编译头文件到此为止,后面的头文件不进行预编译。
BCB 可以预编译头文件以加快链接的速度,但如果所有头文件都进行预编译又可能占
太多磁盘空间,所以使用这个选项排除一些头文件。
有时单元之间有依赖关系,比如单元A 依赖单元B ,所以单元B 要先于单元A 编译。
你可以用#pragma startup 指定编译优先级,
如果使用了#pragma package(smart_init) ,BCB 就会根据优先级的大小先后编译
您可能关注的文档
- MELD联合多项血清学指标对失代偿期肝硬化患者食管静脉曲张短期再出血的预测.pdf
- Meserine对胆碱酯酶活性及东莨菪碱诱导痴呆小鼠学习记忆的影响.pdf
- MG_V结合训练对小鼠运动耐力及骨骼肌抗氧化损伤的影响.pdf
- MicroCT在松质骨结构研究中的应用.pdf
- MicroRNAs对血管新生作用的研究进展_朱建兵.pdf
- microRNA_一种新型肿瘤分子标志物.pdf
- MicroRNA与人类血液系统疾病的研究进展.pdf
- microRNA与消化系肿瘤的研究进展.pdf
- MicroRNA与癌症的研究进展.pdf
- MicroRNA与胃癌的关系.pdf
- 2023年度安全员考试题库检测试题打印附答案详解(达标题).docx
- 2023年度安全员考试题库检测试题打印(实用)附答案详解.docx
- 2023年度安全员考试题库检测试题打印附完整答案详解【名师系列】.docx
- 2023年度安全员考试题库检测试题打印及答案详解【考点梳理】.docx
- 2023年度安全员考试题库检测试题打印附完整答案详解【各地真题】.docx
- 2023年度安全员考试题库检测试题打印附参考答案详解【完整版】.docx
- 2023年度安全员考试高分题库含答案详解(精练).docx
- 2023年度安全员考试高分题库及参考答案详解【能力提升】.docx
- 2023年度安全员考试高分题库附答案详解【典型题】.docx
- 2023年度安全员考试高分题库及参考答案详解(培优B卷).docx
最近下载
- 风险管理高频考点第一章 风险管理基础 .pdf VIP
- 康居小区外网施工组织设计精品.doc VIP
- 2025年电工中级职业技能考试真题卷(电工安全操作与事故处理篇).docx VIP
- 2025年电工中级职业技能考试真题卷:电工中级职业技能考试在线备考班.docx VIP
- 第十四章 整式的乘法与因式分解单元培优卷(原卷版).docx VIP
- 2025年电工中级职业技能考试真题卷:电工中级职业技能考试在线试题.docx VIP
- 第十四章 整式的乘法与因式分解单元培优卷(原卷版).pdf VIP
- 2025年电工中级职业技能理论考试笔试试题(600题)含答案.docx VIP
- 2025年全国电工中级职业技能理论考试试题(700题)含答案.docx VIP
- 介入式心脏瓣膜技术考核试卷.docx
文档评论(0)