c语言 头文件中放函数实体 两个c文件同时引用会报错:找到一个或多个重定义的符号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 头文件中放函数实体 两个c文件同时引用会报错:找到一个或多个重定义的符号相关的知识,希望对你有一定的参考价值。

c语言 头文件中放函数实体 两个c文件同时引用会报错:找到一个或多个重定义的符号

为什么会报这个错 在js中 我可以将一个方法打包在一个外部的js中 然后到处引用 这个不是这样??

C语言头文件中一般只进行函数声明,函数实现一般另写在文件中,这样引用头文件就不会报重复定义了。
你的两个c文件在一个工程中,同时引用你定义的那种,在编译时,两个c文件都会将这段代码(头文件中的)展开到你的c文件中,因此,会报重复定义追问

我知道解决 的办法 我只是想不通 我用在两个c文件中define引用,在编译的时候应该会将两个文件分别编译 怎么会冲突

追答

你的两个c文件在一个工程中,就会在链接时有冲突!

如果不在同一个工程中,则不会有问题!

参考技术A 解决办法是,把你的头文件的开头加入:
#ifndef XXX_H
#define XXX_H
头文件的结尾加入:
#endif

这里XXX可以是任意的,一般是用头文件的名称。追问

我知道解决 的办法 我只是想不通 我用在两个c文件中define引用,在编译的时候应该会将两个文件分别编译 怎么会冲突

追答

C语言中不允许在一个工程中出现重复的函数名,变量名,文件名。
你把同一个头文件引用两次,就会导致工程中出现同名的函数。
C语言中这是不允许的。

本回答被提问者采纳

以上是关于c语言 头文件中放函数实体 两个c文件同时引用会报错:找到一个或多个重定义的符号的主要内容,如果未能解决你的问题,请参考以下文章

c语言在头文件中如何引用另一个头文件中的函数

C语言中有关外部函数调用的问题

引用c语言标准库函数一般要用啥预处理命令

常见C语言知识要点

c语言一个结构体如何在多个源文件里面调用?

c语言头文件怎么写呀?