2013-03-07 3 views
0
#include <stdio.h> 
#include <stdlib.h> 

typedef struct { 
    char name[20]; 
    int age; 
} employee; 

int main(int argc, char** argv) 
{ 
    struct employee em1 = {"Jack", 19}; 
    printf("%s", em1.name); 
    return 0; 
} 

Это не работает, потому что, как компилятор говорит, переменная имеет неполный тип «сотрудника структуры». Что не так?Невозможно напечатать структурную переменную

ответ

4

Удалить из

структура
struct employee em1 = {"Jack", 19}; 

Вы использовали

typedef struct 
{ 
char name[20]; 
int age; 
} 

с целью не требуя ввести STRUCT больше.

4

Проблема в том, что вы создали структуру a typedef, но все еще квалифицируете ее с помощью struct.

Это будет работать:

employee em1 = {"Jack", 19}; 

Или удалить typedef.

+0

Снятие typedef приводит к ошибке. – 2013-03-07 23:26:10

+0

Без typedef он будет определять структуру. Это просто отсутствие тега - 'typedef struct employee {...} employee;' – teppic

0

Чтобы использовать struct employee em1 = ..., вам нужно объявить структуру тегом.

struct employee /* this is the struct tag */ 
{ 
char name[20]; 
int age; 
} em1, em2; /* declare instances */ 
struct employee em3; 

typedef создает псевдоним типа, который вы используете без struct ключевого слова.

typedef struct employee employee; 
employee em4; 
0

Поскольку вы уже набрали свою структуру, вам не требуется снова добавлять ключевое слово struct.

typedef struct Employee{ 
    char name[20]; 
    int age; 
} employee; 

int main(int argc, char** argv) 
{ 
    employee em1 = {"Jack", 19}; 
    printf("%s", em1.name); 
    return 0; 
} 
Смежные вопросы