有两个带结构定义的文件。部首:
typedef struct _InputData InputData;
extern InputData input_data;
和源文件:
struct _InputData{
char const*modification_l;
char const*amount_l;
char const*units_l;
};
InputData input_data = {...};
当我尝试使用其他源文件中的input_data时,它给了我“无效使用不完整的typedef'InputData'”。我想我明白为什么会这样,但我怎么能以最优雅的方式处理它。
答案 0 :(得分:2)
您已经在头文件中定义了完整的结构。否则就无法知道它有哪些字段,即它不完整。
答案 1 :(得分:1)
您可以(或多或少)执行此方法,但您需要将结构定义为指针:
头
extern struct InputData* input_data;
源文件:
struct InputData{
char const*modification_l;
char const*amount_l;
char const*units_l;
};
InputData* input_data;
...
input_data = malloc(sizeof(InputData));
答案 2 :(得分:0)
您可以使用指向其他地方定义的struct
的指针,但不能指定实例。编译器不知道结构是什么以及如何计算这样一个变量的内存偏移量。
为什么要将struct
定义放在C文件中?把它放在标题中。