预编译#pragma的常见使用

#Pragma指令是C/C++中一种特殊的预处理指令,用于设定编译器状态或指示特定动作。本文介绍了#Pragma指令的基本形式及其两个常见参数:message参数用于输出调试信息,pack参数用于控制结构体成员变量的对齐方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。

 

一般格式

其格式一般为: #pragma Para。其中Para 为参数,下面来看一些常用的参数

常用参数(不常使用的直接省略了)

1.      message参数

这个是很常见的参数。

#pragma message(“消息文本”)

编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。调试代码是否被编译进去可以使用到。

2.      pack参数

不多解释了,用法如下:

#pragma pack(1) // 按照1字节方式进行对齐

  struct TCPHEADER

  {

  short SrcPort; // 16位源端口号

  short DstPort; // 16位目的端口号

  int SerialNo; // 32位序列号

  int AckNo; // 32位确认号

  unsigned char HaderLen : 4;// 4位首部长度

  unsigned char Reserved1 : 4;// 保留6位中的4位

  unsigned char Reserved2 : 2;// 保留6位中的2位

  unsigned char URG : 1;

  unsigned char ACK : 1;

  unsigned char PSH : 1;

  unsigned char RST : 1;

  unsigned char SYN : 1;

  unsigned char FIN : 1;

  short WindowSize; // 16位窗口大小

  short TcpChkSum; // 16位TCP检验和

  short UrgentPointer; // 16位紧急指针

  };

#pragma pop() // 取消1字节对齐方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值