能在LINUX下,使用#pragma来定义宏吗?

来源:百度知道 编辑:UC知道 时间:2024/07/07 05:16:33
我在一个JPEG解码程序中,使用了宏 #pragma pack(1) , 是可以正常使用的。但是交叉编译环境下,即arm-linux-gcc, 发现根本就不能用这个宏定义,如果将这个宏定义注释掉的话,虽然也能正常编译程序,将编译后的程序放到ARM板子上后,运行程序,也可以。并生成了一张BMP图片,但是整张图片都是黑的,根本没有解码成功。想想问问大家,能有什么办法替代#pragma吗? 或者让字节按一个字节对齐也就行了。

对于字节对齐的设置, 好像没有一个标准, 各个编译器都有自己的方法, #pragma pack(1) 应该是 VC 上的吧! 至于 arm-linux-gcc 没用过, 不过用过非 arm 的嵌入式 gcc, 有一个命令行选项, 好像是 -fpack-struct, 可以以紧凑方式生成结构数据. 你搜索一下这个选项, 应该有很多说明的.

PS: 在一些嵌入式的CPU下, 会有一种对齐异常, 你在使用这个选择的时候应该注意一下.