#pragma

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.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值