Ошибки в глобальной структуре Init в C - PullRequest
0 голосов
/ 05 марта 2019

В одном из моих файлов я пытаюсь создать глобальную структуру следующим образом:

MyGlobalStruct InstanceOfMyGlobalStruct;
InstanceOfMyGlobalStruct.SomeVariable = False; <<Errors>>

И получаю кучу ошибок:
В этом объявлении нет класса или спецификатора хранилища.
Объявление несовместимо с предыдущей строкой
Ожидается ";"

Когда я делаю это в функции:

void InitMyGlobalStruct()
{
    InstanceOfMyGlobalStruct.SomeVariable = False;
}

Я не получаю ошибок, почему это так?

Редактировать: чем это отличается от:

uint a = 5;

Эта глобальная линия не вызывает у меня никаких ошибок ...

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете объявить переменную в глобальной области видимости (вне любой функции), но должны поместить операторы, которые не являются объявлениями, в тело функции.

Это чистое утверждение:

InstanceOfMyGlobalStruct.SomeVariable = False;

Вот как был разработан Си.

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

MyGlobalStruct InstanceOfMyGlobalStruct = { .SomeVariable = False };

(как упоминал Джонатан)

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