запрос на член что-то не структура или объединение - PullRequest
0 голосов
/ 11 мая 2019

У меня есть структура, определенная следующим образом:

typedef struct spi_device device_t;

struct spi_device {
  int a;
  int b;
  int c;
};

, определенная во включаемом файле.

А в исходном файле,

static device_t my_main_dev = 
{
  .a = 2,
  .b = 3,
  .c = 4,    
};

Я убедился, чтовключаемый файл включен в исходный файл.

Но когда я скомпилировал этот код, я получаю сообщение об ошибке «запрос на член« a »в чем-то, что не является структурой или объединением».Я не могу исправить эту проблему.

Я прочитал несколько постов, в которых говорится об этой проблеме, но ни в одном из них не говорится, что мы можем сделать, когда мы сталкиваемся с ошибкой во время инициализации объекта структуры.Любая помощь в этом отношении приветствуется.

Ответы [ 2 ]

1 голос
/ 11 мая 2019

Вы не предоставили скомпилированный исходный файл, в котором обнаружена проблема. Диагностика может относиться к какой-то другой части вашего исходного файла, чем то, что вы опубликовали.

Если предупреждение действительно указывает на опубликованный код, вот несколько возможных объяснений:

  • ваш компилятор не поддерживает расширения C99. Они довольно редки сегодня, но некоторые старые компиляторы, нацеленные на встроенные процессоры, неуклюжи и, как старые обезьяны, не могут научить новым трюкам.
  • ваш компилятор настроен на отклонение расширений c99 (с -std=c89 или -ansi).

Чтобы обойти эти ограничения, вы можете использовать классический синтаксис для инициализаторов структуры:

static device_t my_main_dev = { 2, 3, 4 };
0 голосов
/ 11 мая 2019

Это была глупая ошибка.Я пропустил запятую для одного из полей.Возврат назад разрешил ошибку компилятора.Извините за беспокойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...