warning malformed '#pragma pack(push[, id], n)' - ignored
2016-04-16 16:42
573 查看
bmp.c:8: warning: malformed '#pragma pack(push[, id], <n>)' - ignored
bmp.c:33: warning: #pragma pack (pop) encountered without matching #pragma pack (push, <n>)
这个警告很重要不能忽略,我遇到的这个问题适用于编译器比较老的,因为韦东山自带的虚拟机Ubuntu9.10用的是/work/tools/gcc- 3.4.5 -glibc -2.3.6,而视频里用的编译器是4.3几,编译器比较高
,这个警告是说结构体对齐的问题。对于自带的较低的编译器解决此问题很简单: 修改BMP文件里的两个结构体
#include <config.h>
#include <pic_operation.h>
#include <picfmt_manager.h>
#include <file.h>
#include <stdlib.h>
#include <string.h>
//#pragma pack(push) /* 将当前pack设置压栈保存 */
//#pragma pack(1) /* 必须在结构体定义之前使用,这是为了让结构体中各成员按1字节对齐 */
typedef struct tagBITMAPFILEHEADER { /* bmfh */
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
} __attribute__((packed)) BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER { /* bmih */
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
unsigned long biXPelsPerMeter;
unsigned long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
} __attribute__((packed)) BITMAPINFOHEADER;
//#pragma pack(pop) /* 恢复先前的pack设置 */
bmp.c:33: warning: #pragma pack (pop) encountered without matching #pragma pack (push, <n>)
这个警告很重要不能忽略,我遇到的这个问题适用于编译器比较老的,因为韦东山自带的虚拟机Ubuntu9.10用的是/work/tools/gcc- 3.4.5 -glibc -2.3.6,而视频里用的编译器是4.3几,编译器比较高
,这个警告是说结构体对齐的问题。对于自带的较低的编译器解决此问题很简单: 修改BMP文件里的两个结构体
#include <config.h>
#include <pic_operation.h>
#include <picfmt_manager.h>
#include <file.h>
#include <stdlib.h>
#include <string.h>
//#pragma pack(push) /* 将当前pack设置压栈保存 */
//#pragma pack(1) /* 必须在结构体定义之前使用,这是为了让结构体中各成员按1字节对齐 */
typedef struct tagBITMAPFILEHEADER { /* bmfh */
unsigned short bfType;
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
} __attribute__((packed)) BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER { /* bmih */
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
unsigned long biXPelsPerMeter;
unsigned long biYPelsPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
} __attribute__((packed)) BITMAPINFOHEADER;
//#pragma pack(pop) /* 恢复先前的pack设置 */
相关文章推荐
- UVALive 6195 —— The Dueling Philosophers Problem
- 堆数据
- 那些年无法一下子看穿的智力题
- C++拷贝构造函数详解
- 20160416
- 揭秘微信红包架构、抢红包算法和高并发和降级方案
- 【杭电oj】1872 - 稳定排序(结构体排序)
- while (getchar() != '\n')
- Map很多Key-Value对应是可以此来处理!
- ActionBar的高度
- 指针常量与常量指针
- 工具使用
- eclipse项目调试配置文件路径
- ndk 静态库使用集锦
- Java基础(1)
- python ---- 自己坑自己
- 线程的基本操作
- Redis笔记_6
- 【NOIP2015模拟11.3】装饰大楼
- Launcher3源码浅析(5.1)--LauncherModel