这几天忙着去复习了,但是心理总是不踏实,不到实验室里就觉得一天的生活变了个样,现在还是晚上来这里“搞起”吧,白天还是在复习准备考试。因为要开始学习freescale,准备明年的比赛了,觉得是时候开始搞这个了,这几天也看了一下大概的内容,发现程序当中#pragma用的很多,每个程序都有,以前写的代码也有,但是没有总结,现在笔者来总结一下#pragma的用法吧。
C 和C++的每个实现对它的主机或操作系统都支持一些独有的特征。例如, 某些程序须对存放数据的存储器区域进行精确的控制,或必须控制特定函数接受参量的方式。#pragma 指令对每个编译器给出了一个方法,在保持与C 和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
语法:
1.#pragma message
#pragma message("消息文本") 当编译器遇到这条指令时,就在编译输出窗口中将消息文本打印出来。
2.#pragma code_seg
#pragma code_seg(["section-name"["section-class"]])
它能够设置程序中函数代码存放的代码段。当我们开发驱动程序时便就会使用到它。
3.#pragma once
只要在头文件的最开始加入这条指令就能够头文件被编译一次。
4.#pragma hdrstop
表示编译头文件到此为止,后面的头文件不进行预编译。
5.#pragma resouce
#pragma resouce"*.dfm"表示*.dfm文件中的资源加入工程。*.dfm中包括了外观定义。
6. #pragma warning
#pragma warning (disable:4507 34; once:4385; error:164) 等价于
#pragma warning (disable:4507 34) //不显示4507和30号警告信息
#pragma warning (once:4385) //4358号警告信息仅报告一次
#pragma warning (error:164) //把164号警告信息作为一种错误
7. #pragma comment
#pragma comment(...) 该指令将一个注释放入一个对象文件或可执行文件中,常用lib关键字帮我们链入一个库文件。如:#pragma comment(lib,"user32.lib") 该指令用来将user32.lib库文件加入到本工程中。
8. #pragma pack
这条指令主要用作改变编译器的默认对齐方式。