I am trying to make a struct with a default value, as described here: Default values in a C Struct. However, I have this C code, inside a header file:
/* tokens.h */
typedef struct {
char *ID;
char *KEY;
char *TYPE;
} tokens;
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
And I am getting an error on line 7 saying:
error: variable 'TOKENS_DFLT' has initializer but incomplete type
Can anyone please explain to me what this problem is and how I can fix it and prevent it in the future?
You haven't defined struct tokens
. You've defined an unnamed struct
and simultaneously typedef
-ed it to the type name tokens
.
If you had instead defined
typedef struct tokens_ {
char *ID;
char *KEY;
char *TYPE;
} tokens;
Then you could declare your constant as either:
const struct tokens_ TOKENS_DFLT = { ... };
Or
const tokens TOKENS_DFLT = { ... };
As it is, you're between two stools.