У меня есть структура с несколькими членами внутри нее, которые я, похоже, не могу определить после объявления ее в отдельной инструкции. Для простоты предположим, что она выглядит следующим образомНедопустимое переопределение «(идентификатор структуры)»
typedef struct
{
int number;
int anotherNumber;
char character;
char anotherCharacter;
} MY_STRUCTURE_t;
Похоже, я должен быть в состоянии объявить структуру и определить его в дальнейшем, так как я хотел бы сделать с переменной более простого типа. Например,
MY_STRUCTURE_t my_structure;
my_structure = {
.number = 1,
.anotherNumber = 42,
.character = '\0',
.anotherCharacter = 'a'
};
Код выше генерирует ошибку: "Invalid переопределение "my_structure"". Достаточно справедливо, компилятор знает лучше. С другой стороны, следующий код работает нормально.
MY_STRUCTURE_t my_structure = {
.number = 1,
.anotherNumber = 42,
.character = '\0',
.anotherCharacter = 'a'
};
В чем проблема с фрагментом посередине? Есть ли фундаментальный недостаток, который мне не хватает?
Посмотрите определение и декларацию. См. Этот [вопрос] (http://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-declaration) – t0mm13b
RHS этого назначения является инициализатором. По определению инициализатор может использоваться только для установки переменной в той точке, в которой она определена. Синтаксис инициализатора недействителен для последующих операций присваивания. – kaylum
К сожалению, этот код может использоваться только для объявлений. Он не создан для назначения новых значений членам структуры. Вместо этого вам придется называть отдельных членов. – Striker