2015-04-13 4 views
3
структур

Когда я пытаюсь объявить-структуру с статической переменной в нем, код не компилируются и выдает ошибку упомянутую нижестатические переменные в C

#include <stdio.h> 

int main(){ 

struct test { 
    int value; 
    static int staticValue = 0; 
}; 

return 0; 
} 

Ошибки я получаю;

expected specifier-qualifier-list before ‘static’ 
    static int staticValue = 0; 
^

Может ли кто-нибудь сказать мне, что мне здесь не хватает?

+1

'C' не поддерживает' static' членов – imreal

+0

У меня было задание, говорящее, что я должен включать статический член в структуру. «Объявите структуру (назовите ее тестом), в которой есть одномерный массив из десяти целых элементов, перечислимое поле для дней недели, число с плавающей запятой и ** статическое ** целое число» @imreal –

ответ

4

Вы можете не хотите объявить struct внутри main функции - что ограничивает сферу его применения, что функции , что редко, чего вы хотите.

Затем, в C, static относится к объекту жизни, а не к элементам структуры. То, что вы хотите, является членом класса static, который является конструкцией C++ (и не a C).

+0

Что не так с определением 'struct' внутри функции? – imreal

+0

@imreal: это действительно C89/C90, но объявляя структуру данных (для чего предназначена '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'разработчик хотел что-то еще хранить данные вместе через границы функций. –

+1

@imreal: лучше? Я сделал редактирование –

0

Вы не можете создать переменную static внутри структуры. Было бы бесполезно усложнять вещи, если бы все структуры этого типа должны были делиться одной переменной.

0

Такого рода вещи (static в структуры) допускается только в C++ не C.

Смежные вопросы