C语言中#pragma的常用参数

#pragma是预处理指令,它的作用是设定编译器的状态或者指示编译器完成一些特定的动作,对每个编译器给出的方法都是不同,不太具有移植性。

一般格式为:#pragma para

1.message参数

#pragma message(“文本消息”),遇到这个消息的时候,编译器在编译的时候就会打印出这条消息

这个指令是比较好用和常用的,常常用来判断某个宏是否定义

2.code_seg参数

#pragma code_seg([/section-name/[,/section-class/]])

它能够设置程序中函数代码存放的代码段,使用没有section-name字符串的#pragma code_seg可在编译开始是将其复位,当我们开发驱动程序就会使用它

3.once参数

#pragma once

在头文件的最开始加入这条指令就能够保证头文件被编译一次,不过一般不太会用这个,主要会用#ifndef #define #endif来避免头文件的多次使用

4.hdrstop

#pragma hdrstop表示预编译的头文件到此为止,后面的头文件不进行预编译,还可以用来指定编译器优先级

5.resource

#pragma resource /*.dfm/表示把*.dfm文件中的资源加入工程

6.warning

#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 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
//.......
#pragma warning( pop )
在这段代码的最后,重新保存所有的警告信息(包括4705,4706和4707)

7.comment(...)

#pragma comment(..)

常用lib关键字,可以帮我链接一个库文件,例如#pragma comment(lib,“lib_name”)

8.pack(n)改变c编译器的字节对齐方式

       在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配
空间。一般地,可以通过下面的方法来改变缺省的对界条件:
  · 使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。
        · 使用伪指令#pragma pack (),取消自定义字节对齐方式。
        另外,还有如下的一种方式:
        · __attribute((aligned (n))),让所作用的结构成员对齐在n字节自然边界上。
如果结构中有成员的长度大于n,则按照最大成员的长度来对齐。
        · __attribute__ ((packed)),取消结构在编译过程中的优化对齐,按照实际
占用字节数进行对齐


猜你喜欢

转载自blog.csdn.net/follow_blast/article/details/79131812
今日推荐