How can I remove the VS warning C4091: 'typede

2019-04-05 12:07发布

问题:

This warning is triggered multiple times in my code by the same declaration, which reads :

// 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;
      }
};

I don't want to just turn off that warning,

but rather change the code so that the warning doesn't come up !

NOTE : I don't want to declare any variables here (it's a header file), only define what the struct 'SPREADSHEET' should include...

回答1:

Delete typedef. It's the C way of declaring structs, C++ does it automatically for you.



回答2:

You need to add some identifier before the terminating ;, e.g.:

typedef struct BLAH { ... } BLAH;


回答3:

Just remove "typedef". You declare a new struct and the typedef keyword isn't used for that. You would use typedef to define a new name for an existing type, like this:

typedef int number;


回答4:

Yes, the BLAH after the closing brace is important to make the typedef a valid one. You can remove the SPREADSHEET from the present place and keep it in between the } and the ;.



回答5:

My interpretation of this warning is that the compiler is indicating that the typedef keyword is unnecessary because a variable is not being declared. and therefore if the intention of the code is to simply declare a struct the typedef is superfluous.