Подтвердить что ты не робот

Как удалить предупреждение VS C4091: "typedef": игнорируется слева от "SPREADSHEET", когда не объявлена ​​переменная

Это предупреждение запускается несколько раз в моем коде тем же объявлением, которое гласит:

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

Я не хочу просто отключать это предупреждение,

но скорее измените код, чтобы предупреждение не появилось!

ПРИМЕЧАНИЕ. Я не хочу объявлять какие-либо переменные здесь (это заголовочный файл), только определить, что должна включать структура "SPREADSHEET"...

4b9b3361

Ответ 1

Удалить typedef. Это C способ объявления структур, С++ делает это автоматически для вас.

Ответ 2

Вам нужно добавить некоторый идентификатор перед завершающим ;, например:

typedef struct BLAH { ... } BLAH;

Ответ 3

Просто удалите "typedef". Вы объявляете новую структуру, и для этого не используется ключевое слово typedef. Вы должны использовать typedef для определения нового имени для существующего типа, например:

typedef int number;

Ответ 4

Да, BLAH после закрытия скобки важно сделать typedef допустимым. Вы можете удалить SPREADSHEET из текущего места и сохранить его между } и ;.

Ответ 5

Моя интерпретация этого предупреждения заключается в том, что компилятор указывает, что ключевое слово typedef не требуется, поскольку переменная не объявляется. и поэтому, если намерение кода состоит в том, чтобы просто объявить struct, значение typedef является излишним.