C中链接错误的多重定义

Fer*_*Fer 4 c linker


我正在用C开发一个应用程序.我想在多个源文件中使用同名的本地函数.让我简化一下这个问题:

在地狱

void myLocalFunc(){ printf("Hello hell\r\n"); }
Run Code Online (Sandbox Code Playgroud)

在world.c

void myLocalFunc(){ printf("Hello world\r\n"); }
Run Code Online (Sandbox Code Playgroud)

因为它们只是本地函数,所以我不在头文件中声明它们.但是当我编译项目时,它给了我"myLocalFunc'的多重定义"错误信息以及这一个:"'myLocalFunc'的多重定义(在这里首先定义)".

这里我的错误是什么?

And*_*gia 8

替换为

static void myLocalFunc(){ printf("Hello world\r\n"); }
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在使用C++,您还可以使用这样的匿名命名空间:

namespace {
void myLocalFunc(){ printf("Hello world\r\n"); }
}
Run Code Online (Sandbox Code Playgroud)