其他源文件中定义的 extern vars 和 struct
有两个带有结构定义的文件。标头:
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'”。我想我明白为什么会发生这种情况,但我该如何以最优雅的方式处理它。
Have two files with struct definitions. Header:
typedef struct _InputData InputData;
extern InputData input_data;
and source file:
struct _InputData{
char const*modification_l;
char const*amount_l;
char const*units_l;
};
InputData input_data = {...};
When i try to use input_data from other source file it gives me "invalid use of incomplete typedef ‘InputData’". I think i understand why it happened, but how i can deal with it in the gracefullest way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您必须在头文件中定义完整的结构。否则无法知道它有哪些字段,即它是不完整的。
You have do define the complete structure in the header file. Otherwise there is no way to know what fields it have, i.e. it's incomplete.
您可以(或多或少)执行此方法,但您需要将结构定义为指针:
头
源文件:
You can do this approach (more or less), but you need to define the struct as a pointer instead:
header
source file:
您可以使用指向其他地方定义的
struct
的指针,但不能使用实例。编译器不知道这样的变量的结构是什么以及如何计算内存偏移量。为什么将
struct
定义放在C文件中?把它放在标题中。You can use a pointer to a
struct
defined elsewhere, but not an instance. Compiler doesn't know what is the structure and how to calculate memory offsets for such a variable.Why do you put the
struct
definition in the C file? put it in the header.