- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#pragma预处理命令
#pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma指令:
#pragma comment(lib,XXX.lib)
表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。
#pragma comment(linker,/ENTRY:main_function)
表示指定链接器选项/ENTRY:main_function
#pragma once
表示这个文件只被包含一次
#pragma warning(disable:4705)
表示屏蔽警告4705
????? C和C++程序的每次执行都支持其所在的主机或操作系统所具有的一些独特的特点。例如,有些程序需要精确控制数据存放的内存区域或控制某个函数接收的参数。#pragma为编译器提供了一种在不同机器和操作系统上编译以保持C和C++完全兼容的方法。#pragma是由机器和相关的操作系统定义的,通常对每个编译器来说是不同的。
如果编译器遇到不认识的pragma指令,将给出警告信息,然后继续编译。Microsoft C and C++ 的编译器可识别以下指令:alloc_text, auto_inline,bss_seg,check_stack,code_seg,comment,component,conform,const_seg,data_seg,deprecated, fenv_access,float_control,fp_contract,function,hdrstop,include_alias,init_seg,inline_depth,inline_recursion,intrinsic, make_public,managed,message,omp,once,optimize,pack,pointers_to_members,pop_macro,push_macro,region, endregion,runtime_checks,section,setlocale,strict_gs_check,unmanaged,vtordisp,warning。其中conform,init_segpointers_to_members,vtordisp仅被C++编译器支持。
?????? 以下是常用的pragma指令的详细解释。
1.#pragma once。保证所在文件只会被包含一次,它是基于磁盘文件的,而#ifndef则是基于宏的。
2.#pragma warning。允许有选择性的修改编译器的警告消息的行为。有如下用法:
#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)。
3.#pragma hdrstop。表示预编译头文件到此为止,后面的头文件不进行预编译。BCB可以预编译头文件以 加快链接的速度,但如果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文 件。
4.#pragma message。在标准输出设备中输出指定文本信息而不结束程序运行。用法如下:
#pragma message(消息文本)。当编译器遇到这条指令时就在编译输出窗口中将“消息文本”打印出来。
5.#pragma data_seg。一般用于DLL中,它能够设置程序中的初始化变量在obj文件中所在的数据段。如果未指定参数,初始化变量将放置在默认数据段.data中,有如下用法:
#pragma data_seg(Shared) // 定义了数据段Shared,其中有两个变量a和bint a = 0; // 存储在数据段Shared中 int b; // 存储在数据段.bss中,因为没有初始化 #pragma data_seg() // 表示数据段Shared结束,该行代码为可选的
对变量进行专门的初始化是很重要的,否则编译器将把它们放在普通的未初始化数据段中而不是放在shared中。如上述的变量b其实是放在了未初始化数段.bss中。
#pragma data_seg(Share
您可能关注的文档
- 36人体机能学实验(一)教学大纲资料.doc
- 42种营养素资料.doc
- 80-160无纸记录仪说明书全文资料.doc
- 通识能力与职业素养题库.ppt
- 选修3暑期测试题库.doc
- 通史__近代中国的觉醒与探索题库.ppt
- 1995年全国高考统一招生资料.doc
- 选修5:1.4有机化合物的步骤和方法题库.ppt
- 1996年清华大学硕士入学生化资料.doc
- 通信电子线路习题解答题库.doc
- 多点监督与特征融合校准:目标检测算法的创新与突破.docx
- 南宁市门诊HIV_AIDS患者抑郁状况剖析与影响因素探究.docx
- 医疗过失犯罪中客观归责理论的精准适用与深度解析.docx
- 南宁市低碳经济发展研究.docx
- 清解瘀毒胶囊对脑出血大鼠血红蛋白毒性作用及机制探究.docx
- 内蒙古赤峰市元宝山区农村小学教师培训:现状、问题与突破路径.docx
- 泉州开发区国有资产投资经营有限公司发展战略研究:基于区域经济与市场环境的分析.docx
- 能源利用效率与经济增长方式的深度耦合及中国战略抉择.docx
- 分布式信号波达方向 - 时延联合估计算法的深度剖析与创新探索.docx
- 新媒体环境下大学校园精神传播的创新变革.docx
文档评论(0)