2015-10-30 3 views
-1

Прежде чем вы пометите ее как дубликат/нисходящее, Я прочитал книги, потратил приличное количество времени на Интернет, исследуя это, но НЕ МОГУ найти ответ.Инициализация структуры в C

Я хочу инициализировать мою структуру, когда я ее создаю. Но я также хочу, чтобы объявить его как тип, используя ЬурейиЙ

Вот что я пытаюсь сделать

typedef struct Clock_TAG Clock; 

struct Clock_TAG{ 
    int time; 
}Clock = { 
    0 
}; 

И это дает мне ошибку «переопределение„Часы“, как различного рода символ»

typedef struct Clock_TAG{ 
int time; 
}Clock = { 
    0 
}; 

дает «незаконное инициализатору (только переменные могут быть инициализирована)»

Я знаю, что я должен использовать имя структуры, чтобы инициализировать его, я хочу, чтобы инициализировать его во время его создания, поэтому, пожалуйста, не предлагайте метод init().

Это пример код, я хочу конкретно понять, как я могу иметь ЬурейиЙ и инициализацию структуры в файле .h Я знаю, что есть много способов обойти это, я могу опустить с помощью ЬурейеГо или инициализировать-структуру членов, но я хочу понять, почему это дает мне ошибку и как ее исправить.

P.S Является ли также законным для malloc структуры в файле .h?

+3

Вы не читали внимательно или не понимали, как работают определения typedef и 'struct' и определения переменных. Компилятор уже точно говорит вам, что не так. И вы никогда не должны _define_ переменную в заголовке. – Olaf

+0

Я читал очень внимательно и да, мне не хватает понимания, вот почему я спрашиваю. Ну, другой человек в моем предыдущем вопросе о stackoverflow сказал мне, что это правильный способ сделать это. – ada

+0

@ Олаф тоже не возражаете объяснить почему? – ada

ответ

3

typedef является псевдонимом, когда заявил:

typedef struct Clock_TAG Clock; 

и о том, что после того, как ЬурейеЕ:

struct Clock_TAG{ 
    int time; 
} Clock = {0}; 
    ^^^^^ 

Вы пытаетесь инициализировать struct имя. Вероятно, вы имели в виду следующее:

typedef struct Clock_TAG Clock; 

struct Clock_TAG{ 
    int time; 
} clock = {0}; 
+0

ЭТО ДЕЛАЕТ СМЫСЬ СМЫСЛ! Спасибо!!!!!! – ada

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