c - 重复的结构定义(一个定义在头文件中,另一个在 C 源代码中)

标签 c

  1. 在头文件abc.h中声明了一个结构体STRUCT_ABC
  2. abc.h 包含在 abc.c 文件中,并在 abc.c 中的某些函数中使用了 STRUCT_ABC。
  3. 另一个文件 def.c 不包含 abc.h。但是在def.c中,我再次定义了一个同名的结构体,即STRUCT_ABC,但是内容不同。
  4. abc.cdef.c 都在同一个库下,在运行时控制首先进入 abc.c。
  5. 控制从 abc.cdef.c 然后返回,比如多次。

这是否总是会产生运行时错误,或者有时这可能会起作用?

最佳答案

它肯定不会导致运行时错误。

编译器将在编译使用该结构的文件时选择它看到的结构的定义,因此您也不应该得到任何编译或链接器错误。

不过,实际上,如果您想在两个地方使用相同的结构,最好在单个 header 中定义它,然后在多个 .c 文件中#include。这将使维护更容易(您只需要更新一次结构),并且您会确定您正在使用哪个定义(因为只有一个)。

关于c - 重复的结构定义(一个定义在头文件中,另一个在 C 源代码中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094358/

相关文章:

c - 时间服务器时间类型问题

c - 具有结构的用户输入数据库需要找到类(class)平均值

c - 我在动态库中重新定义了标准C库函数,但无法使用它

c++ - 计算大数的模数

c++ - 如何防止从某些代码段调用函数?

c - 为什么 "long double"类型的变量产生荒谬的输出,而 "float"和 "double"类型工作正常?

c - do {} while 不会终止

c - C 中的数据类型混淆

c - 我想创建一个程序来使用 C 中的字符串函数比较两个字符串。我的代码有什么问题?我是 C 的初学者

C : Comparing 2 Strings