c语言中 pragma用法,c语言#pragma用法详解.docx

PAGE / NUMPAGES

目录:

(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文档收集自网络,仅用于

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值