2009-05-26 161 views
10

这个警告是由相同的声明引发了我的代码多次,其内容如下:我如何删除VS警告C4091:“类型定义”:忽略左“电子表格”当没有变量声明

// Spreadsheet structure 
typedef struct SPREADSHEET 
{  
     int ID;    // ID of the spreadsheet  
     UINT nLines;   // Number of lines 

     void CopyFrom(const SPREADSHEET* src) 
     { 
      ID = src->ID; 
      nLines = src->nLines; 
     } 
}; 

我不想只关掉那个警告,

而是改变代码,使警告不出现!

注:我不想在这里声明任何变量(这是一个头文件),只需要在终止前;添加一些标识符定义是什么结构“电子表格”应包括...

回答

20

删除typedef。这是C语言中声明结构的方式,C++会自动为你做。

+0

这也不会在C. – sth 2009-05-27 00:06:58

5

,例如:

typedef struct BLAH { ... } BLAH; 
4

只要删除“typedef”。您声明了一个新的结构,并且typedef关键字不用于此。你可以使用typedef为现有的类型定义一个新的名字,如:

typedef int number; 
0

是的,BLAH后右括号是非常重要的,使typedef一个有效的。您可以从当前位置删除SPREADSHEET,并将其保留在};之间。

+0

这应该留作评论,请通过询问和回答问题并回顾[常见问题](http://stackoverflow.com/faq)获得所需的声望。 – 2012-11-30 03:35:40

0

我对此警告的解释是编译器指出typedef关键字是不必要的,因为变量没有被声明。因此如果代码的意图是简单地声明struct,那么typedef是多余的。