Ответ 1
Нет, это не имеет смысла в C. Это действительно в С++, хотя.
Является ли законным иметь "статический" член внутри структуры C?
Например
struct my_struct {
int x;
static int y;
};
Если это действительно законно, то каковы последствия использования "статического" ключевого слова?
Нет, это не имеет смысла в C. Это действительно в С++, хотя.
Нет, не в C
(У вас может быть статический член в структуре C++
.)
Вероятно, вас смущает тот факт, что Static не используется для тех же целей, что и в таких языках, как Java или С# (или С++, если на то пошло). В этом сообщении объясняется C использование статического тщательно:
Кажется, вы спрашиваете об интуиции за статическим членом. Статический член означает одно для каждого типа вместо одного экземпляра. В вашем случае, если у вас
struct my_struct a, b;
тогда a
и b
будут иметь свои собственные x
, но будут иметь общий y
. Это также относится к статическим функциям-членам.
Но, как было сказано, это не относится к C. Это относится только к С++ и Java.
вы не можете использовать спецификатор static
в structure
...
structure
переменные не могут быть инициализированы внутри спецификаторов structure
и static
, инициализируя переменную до 0..
это поведение не допускается в C..
В компиляции Ошибка компилятора; Потому что всякий раз, когда компилятор сталкивается с статическим ключевым словом, он должен генерировать код для инициализации (нулевого или явно заданного значения) статической переменной в сегменте данных или сегменте BSS. В нашем сценарии память не будет выделена для объявления структуры, поэтому компилятор выдает ошибку.