C Variable has incomplete initializer
-
26-09-2019 - |
Question
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?
Solution
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.
OTHER TIPS
This:
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
should be:
const tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
Since you've defined the name tokens
to mean struct tokens
.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow