【发布时间】:2014-11-07 16:22:55
【问题描述】:
我有两个 .c 文件名:Main.c 和 Test2.c。我在 Main.c 中定义了一个函数:void TestExtern2()。我在 Test2.c 中定义了另一个同名但它是静态的函数:static void TestExtern2()。我将声明:void TestExtern2(); 放在头文件中。
我编译:
$ gcc Main.c Test2.c and get this error:
error: static declaration of 'TestExtern2' follows non-static declaration
有没有办法解决这个问题。我的意思是我想在头文件中提供函数声明,但也需要保持两个函数的名称相同。
【问题讨论】:
-
在C中,同一作用域内不能有重复的函数签名。
-
你能解释一下为什么你最终“需要”这个吗?听起来很奇怪。可能有更好的选择。
-
你期望什么行为?如何区分对外部
TestExtern2的调用和对静态的调用? -
如果你需要访问多个源文件中的同一个函数,
define其中一个文件中的函数,然后declare函数中的extern另一个。 -
“有办法解决这个问题吗?”是 - 重命名其中一个函数。
标签: c header-files