我正在 Cypress PSoC IDE (C99 ARM_GCC) 中编码。当我在两个 *.c
模块(例如 void MyClear()
)中使用同名函数时,出现错误:
Build error: multiple definition of `Clear'
MyClear()
没有在任何 header 中提及,我推测它是 .C
文件私有(private)的,但我显然错了。
最佳答案
第 1 点:
在 C
中,函数默认情况下是全局的。
C
中没有private
的概念。 FWIW,有 static
,但是,limits 函数的范围仅限于翻译单元。参见 this previous question and the answers一些澄清。
第 2 点
您在链接状态中遇到此错误。当所有翻译单元都已编译并即将链接在一起时,链接器可以看到函数的多个定义,因此会抛出错误。
请注意:您不要在头文件中定义 函数。您声明它们,只要声明不冲突,您甚至可以在单个翻译单元中拥有任意数量的声明。
关于c - 为什么两个 .C 文件中的同名私有(private)函数会导致多重定义错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29694261/