1. #pragma message
#define X
#ifdef X
#pragma message("消息文本")
#endif
注意:消息文本在编译输出窗口中显示。
2. #pragma once
只要在头文件中加入这条指令就能保证头文件被编译一次。
3. #pragma code_seg
设置程序中函数代码段存放的代码段。在开放驱动程序的时候使用到。
4. #pragma hdrstop
表示预编译头文件到此为止,后面的头文件不进行预编译。
5. #pragma resource
#pragma resource "*.dfm"表示把*.dfm文件中的资源加入工程。
6. #pragma 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号警告信息作为一个错误
6. #pragma comment
#pragma comment(...) 该指令将一个注释记录放入一个对象文件或可执行文件
6. #pragma pack
#pragma pack(n) //编译器将按照n字节对齐
//每个成员按其类型的对齐参数和指定的对齐参数中较小的一个对齐,
//即min( n, sizeof(item) )
#pragma pack() //取消自定义字节对齐方式
#pragma pack(8)
struct TestStruct1
{
char a;
long b;
};
struct TestStruct2
{
char c;
TestStruct1 d;
long long e;
};
int main(int argc, char* argv[])
{
cout << sizeof(TestStruct1) << endl;
cout << sizeof(TestStruct2) << endl;
return 0;
}
运行结果:
8
24
TestStruct1的内存布局结构:
(a)1***,(b)1111
TestStruct2的内存布局结构:
(c)1***,(d.a)1***,
(d.b)1111,****,
(e)11111111
注意:对于结构来说,它的默认对齐方式是其所有成员使用的对齐参数最大的一个,对于TestStruct1来说,就是4.