Использование "статического" в структуре в C

Является ли законным иметь "статический" член внутри структуры C?

Например

struct my_struct {
    int x;
    static int y;
};

Если это действительно законно, то каковы последствия использования "статического" ключевого слова?

Ответы

Ответ 1

Нет, это не имеет смысла в C. Это действительно в С++, хотя.

Ответ 2

Нет, не в C

(У вас может быть статический член в структуре C++.)

Ответ 3

Вероятно, вас смущает тот факт, что Static не используется для тех же целей, что и в таких языках, как Java или С# (или С++, если на то пошло). В этом сообщении объясняется C использование статического тщательно:

Что такое "статический" значит?

Ответ 4

Кажется, вы спрашиваете об интуиции за статическим членом. Статический член означает одно для каждого типа вместо одного экземпляра. В вашем случае, если у вас

struct my_struct a, b;

тогда a и b будут иметь свои собственные x, но будут иметь общий y. Это также относится к статическим функциям-членам.

Но, как было сказано, это не относится к C. Это относится только к С++ и Java.

Ответ 5

вы не можете использовать спецификатор static в structure...

structure переменные не могут быть инициализированы внутри спецификаторов structure и static, инициализируя переменную до 0..

это поведение не допускается в C..

Ответ 6

В компиляции Ошибка компилятора; Потому что всякий раз, когда компилятор сталкивается с статическим ключевым словом, он должен генерировать код для инициализации (нулевого или явно заданного значения) статической переменной в сегменте данных или сегменте BSS. В нашем сценарии память не будет выделена для объявления структуры, поэтому компилятор выдает ошибку.