C语言#pragma用法详解.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录:(0)前言(1) #pragma message能够在编译信息输出窗口中输出相应的信息(2) #pragma code_seg能够设置程序中函数代码存放的代码段,开发驱动程序的时会用到(3) #pragma once若用在头文件的最开始处就能够保证头文件被编译一次(4) #pragma hdrstop表示预编译头文件到此为止(5) #pragma resource *.dfm表示把*.dfm文件中的资源加入工程(6) #pragma warning允许有选择性的修改编译器的警告消息的行为(7) #pragma comment将一个注释记录放入一个对象文件或可执行文件中(8) #pragma data_seg建立一个新的数据段并定义共享数据应用1:在DLL中定义一个共享的,有名字的数据段应用2:data_seg控制应用程序的启动次数(9)其他用法(0)前言 #Pragma 指令的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma 指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的, 且对于每个编译器都是不同的。其格式一般为: #Pragma Para 其中Para为参数,下面来看一些常用的参数。(1) #Pragma message参数能够在编译信息输出窗口中输出相应的信息这对于源代码信息的控制是非常重要的。其使用方法为: Pragma message(“消息文本”) 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 #ifdef _X86 #pragma message(“_X86 macro activated!”) #endif若定义了_X86,程序编译时就会在显示“_X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了。(2) #pragma code_seg能够设置程序中函数代码存放的代码段,开发驱动程序的时候就会使用到它。格式如下: #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ][ segment-name [, segment-class ] ])该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序 ,如果code_seg没有带参数的话,则函数在OBJ文件中存放在默认在.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() {} (3)#pragma once (比较常用)若用在头文件的最开始处就能够保证头文件被编译一次.一般在整个工程中我们只要包含头文件一次就够了,若多个.c/.cpp文件中都要包含同一个头文件,比如Windows.h,那很多声明等等岂不是有两次了?解决这个问题的传统的方法是在头

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档