C语言预处理指令

预处理指令

在一个程序的编译过程中,分为四个阶段,即预处理、编译、汇编、链接。

预处理过程中,会处理所有的指令(以“#”开头的语句),替换为纯C的语法。

下面列举一些常用的预处理指令。

#define

定义宏

#elif

else if 多选分支

#else

与#if #ifndef  #ifdef结合使用

#error

产生错误,挂起预处理程序

#if

判断

#endif

结束判断

#ifdef

判断宏是否定义

#ifndef

判断宏是否没有被定义

#include

将指定文件插入“#include”的位置

#include_next

与#include一样,但从当前目录之后的目录查找

#line

指定行号

#pragma

提供额外信息的标准方法,可用来指定平台

#undef

删除宏

#warning

创建一个警告

##

连接操作符,用于宏内连接两个字符串

1、pargma 基础用法

1.1 #pragma GCC dependency “hello.c

如果“hello.c”文件被更新,则会产生警告。

1.2 #pragma GCC poison goto

禁用“#pragma GCC poison”后的操作符,这里是禁止使用goto

1.3 #pragma pack(int)

这个决定结构的对齐与补齐

对齐:指每个成员必须放在自己大小的整数倍位置(大于4字节按4字节算)

补齐:指每个结构的大小应该是最大成员的整数倍(大于4字节的按4字节算)

之所以进行对齐和补齐,是为了加快寻址,但是会浪费空间,可以使用这个指令来改变对齐和补齐的单元,如:

#pragma pack(1) 按1字节进行对齐和补齐,即不做对齐和补齐。

#pragma pack(2) 按2字节的整数倍对齐和补齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一朝英雄拔剑起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值