vc2008 读取bmp有关问题

vc2008 读取bmp问题 求助
#include<stdio.h>  
  typedef struct tagBITMAPFILEHEADER//  
  {  
  unsigned int type;//文件类型是否为BMP文件  
  unsigned long size;//文件大小,以字节为单位  
  unsigned int reserverd1;//文件保留字,必须为0  
  unsigned int reserverd2;//文件保留字,必须为0  
  unsigned long bfOffBits;//文件头的偏移量表示,以字节为单位  
  }BITMAPFILEHEADER;  
   
  typedef struct tagBITMAPINFOHEADER  
  {  
  int bisize;//本结构大小字节为单位  
  int width;//图形宽度以象素为单位  
  int height;//图形高度以象素为单位  
  int planes;//目标设备的级别,必须为1  
  int bitcount;//每个象素所需要的位数  
  int SizeImage; // 位图的大小,以字节为单位  
  int compression;//是否为压缩  
  int xpermeter;//位图水平分辨率,每米像素数  
  int ypermeter;// 位图垂直分辨率,每米像素数  
  int ClrUsed;// 位图实际使用的颜色表中的颜色数  
  int ClrImportant;// 位图显示过程中重要的颜色数  
  }BITMAPINFOHEADER;  
   
  typedef struct bmp  
  {  
  BITMAPFILEHEADER file;//文件信息区  
  BITMAPINFOHEADER info;//图象信息区  
  char *buffer;//存放BMP位图内存的指针  
  }bmp;  
   
  bmp readbmpfile(void);//函数声明  
   
  void main()  
  {  
  bmp m;  
  m=readbmpfile();//读取一个位图  
   
  }  
   
  bmp readbmpfile(void)  
  {  
  bmp m;//定义一个位图结构  
  FILE *fp;  
  if((fp=fopen("d:\\1.bmp","r"))==NULL)  
  {  
  printf("不能打开该文件\n");  
  //exit(0);  
  }  
  else  
  {  
  fread(&m.file.type,sizeof(int),1,fp);  
  printf("类型为%d\n",m.file.type);  
   
  fread(&m.file.size,sizeof(long),1,fp);  
  printf("文件长度为%d\n",(int)(m.file.size));  
   
  fread(&m.file.reserverd1,sizeof(int),1,fp);  
  printf("保留字1为%d\n",m.file.reserverd1);  
   
  fread(&m.file.reserverd2,sizeof(int),1,fp);  
  printf("保留字2为%d\n",m.file.reserverd2);  
   
  fread(&m.file.bfOffBits,sizeof(long),1,fp);  
  printf("偏移量为%d",(int)m.file.bfOffBits);  
  }  
  return m;  
  }


运行的时候提示The variable 'm' is being used without being initialized。
m明明是已经定义了,不知道为什么还会有问题,难道是vc2008的原因?求解答

------解决方案--------------------
运行的时候提示The variable 'm' is being used without being initialized。

他的意思是该m变量没有初始化就被使用了,应该是waring信息吧。。。
------解决方案--------------------
else中如下改
C/C++ code

fread(&m.file,sizeof(BITMAPFILEHEADER),1,fp); 
fread(&m.info,sizeof(BITMAPINFOHEADER),1,fp); 
m.buffer = new char[m.info.width*m.info.height*m.info.bitcount/8];
fread(&m.buffer,1,m.info.width*m.info.height*m.info.bitcount/8,fp);