在没有头文件的情况下从 C 调用 CPP 函数

sch*_*hul 1 c c++

我不明白,如果没有 .h 文件,如何建立“连接”。

这是代码:

文件main.c:

void Run( void ) ;
int main(void)
{
    Run() ;
}
Run Code Online (Sandbox Code Playgroud)

文件:运行.cpp:

static MyClass gMyClassInstance;
extern "C" {
    void Run( void )
    {
       gMyClassInstance->Run();
    }

}
Run Code Online (Sandbox Code Playgroud)

Run在整个项目中搜索,再也没有出现,也没有在任何 .h 文件中。它是如何做到的?

小智 6

.h文件用于避免在.c/.cpp文件之间重复声明.c/.cpp(当函数未在本地定义时,编译器需要声明)。

在您的示例中,有一个单一的声明void Run( void );,直接在main.c而不是在单独的声明中.h,这对于编译器来说就足够了。Run与中定义的函数的连接run.cpp将由链接器建立(作为名为 的入口点_Run)。

C/C++ 编程中绝不强制要求头文件。