Pregunta

Estoy tratando de hacer una estructura con un valor por defecto, como se describe aquí: valores por defecto en un C Struct . Sin embargo, tengo el código C, dentro de un archivo de cabecera:

/* tokens.h */
typedef struct {
    char *ID;
    char *KEY;
    char *TYPE;
} tokens;

const struct tokens TOKENS_DFLT = {
    "id",
    "key",
    "type"
};

Y yo estoy recibiendo un error en la línea 7 que dice:

error: variable 'TOKENS_DFLT' has initializer but incomplete type

Puede alguien por favor me explique lo que es este problema y cómo se puede arreglar y evitar que en el futuro?

¿Fue útil?

Solución

No se han definido struct tokens. Que haya definido un struct sin nombre y al mismo tiempo typedef-ed que el nombre del tipo tokens.

Si en cambio había definido

typedef struct tokens_ {
    char *ID;
    char *KEY;
    char *TYPE;
} tokens;

A continuación, se podría declarar su constante como o bien

const struct tokens_ TOKENS_DFLT = { ... };

o

const tokens TOKENS_DFLT = { ... };

Como es, usted está entre dos aguas.

Otros consejos

Este:

const struct tokens TOKENS_DFLT = {
    "id",
    "key",
    "type"
};

debería ser:

const tokens TOKENS_DFLT = {
    "id",
    "key",
    "type"
};

Desde que ha definido el nombre tokens a struct tokens media.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top