- 在头文件
abc.h
中声明了一个结构体STRUCT_ABC - 将
abc.h
包含在abc.c
文件中,并在abc.c
中的某些函数中使用了 STRUCT_ABC。 - 另一个文件
def.c
不包含abc.h
。但是在def.c
中,我再次定义了一个同名的结构体,即STRUCT_ABC,但是内容不同。 abc.c
和def.c
都在同一个库下,在运行时控制首先进入 abc.c。- 控制从
abc.c
到def.c
然后返回,比如多次。
这是否总是会产生运行时错误,或者有时这可能会起作用?
最佳答案
它肯定不会导致运行时错误。
编译器将在编译使用该结构的文件时选择它看到的结构的定义,因此您也不应该得到任何编译或链接器错误。
不过,实际上,如果您想在两个地方使用相同的结构,最好在单个 header 中定义它,然后在多个 .c 文件中#include
。这将使维护更容易(您只需要更新一次结构),并且您会确定您正在使用哪个定义(因为只有一个)。
关于c - 重复的结构定义(一个定义在头文件中,另一个在 C 源代码中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094358/