C语言中两个.a库之间交互头文件的修改注意事项

交互头文件的作用和重要性

两个库之间交换数据需要操作库对外提供的函数进行,头文件里有函数和变量类型的声名,也就是定义了和库交换信息的协议。一般定义变量类型时都会有保留位,这是为将来做拓展时使用的。头文件里一旦定义好的函数名和变量类型是不能轻易改变的,一旦修改出错,就会导致函数出错,或者不能正确解析传输的数据,所以修改头文件需要慎重。

修改头文件的注意事项

1.修改头文件要注意兼容性,不能因为修改导致之前按照原有头文件写的代码不能运行;
2.要增加新功能时,如果需要占用保留位,需要尽量节省。能用char就不要用int;传达多个同类型变量不要用数组,用指针加数量的方式;
3.新增加的都往后添加,不要改变之前变量的顺序;

实例代码(修改前):

//BMP图片的信息头
typedef struct InfoHeader
{
	 int bisize;//信息头的大小,一般是40
	 int biWidth;//位图的宽
	 int biHeight;//位图的高
	 short biPlanes;//固定值1
	 short biBitCount;//每个像素的位数
	 int biCompression;//压缩方式,BI_RGB(0)为不压缩, BI_BITFIELDS(3)用于16位、32位位图  
	 int biSizeImage;//位图全部像素占用的字节
	 int biXpelsPerMeter;//水平分辨率
	 int biYPelsPerMeter;//垂直分辨率
	 int biClrUsed;//位图使用的颜色数。0代表颜色数为2的biBitCount次方
	 int biClrImportant;//重要的颜色数,0代表所有颜色都重要	
	 int	reserved[20];
}BmpInfoHeader;

新增:

假如在头文件中存在这样一个结构体,最后定义了一个int型数组,这就是保留位。目前这20个int变量是没有实际意义,将来我们想要增加传达的信息,就可以来占用保留位。
1.我们想增加一个使能位,就可以不用int类型,用一个char类型就可以;
2.需要传递10个int型变量,就不要定义数组,而是用指针。在外面申请一块内存存放变量,然后把变量的个数和指针传递出去;
备注:这样占用保留位,而不是新增加变量的方式优点是结构体的大小始终保持不变。

实例代码(修改后):

//BMP图片的信息头
typedef struct InfoHeader
{
	 int bisize;//信息头的大小,一般是40
	 int biWidth;//位图的宽
	 int biHeight;//位图的高
	 short biPlanes;//固定值1
	 short biBitCount;//每个像素的位数
	 int biCompression;//压缩方式,BI_RGB(0)为不压缩, BI_BITFIELDS(3)用于16位、32位位图  
	 int biSizeImage;//位图全部像素占用的字节
	 int biXpelsPerMeter;//水平分辨率
	 int biYPelsPerMeter;//垂直分辨率
	 int biClrUsed;//位图使用的颜色数。0代表颜色数为2的biBitCount次方
	 int biClrImportant;//重要的颜色数,0代表所有颜色都重要	
	 
	 char	enable;
	 char	reservedChar[3]; 
	 int	num;
	 int	*info; //指针指向的内存处依次存放num个int型变量
	 int	reserved[17];
}BmpInfoHeader;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

正在起飞的蜗牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值