c和c++头文件的一些问题

some problems with c and c++ header file

本文关键字:问题 文件 c++      更新时间:2023-10-16

我在c++类函数中使用c函数时遇到了一个令人困惑的问题。

我有一个名为A的类,它在A.h中定义并在A.cpp中实现。还有B.hB.c,它们声明并实现了一些功能。

A函数中,我调用了在B.hB.c中定义的函数(没有类B),我认为这是一个常见的东西,但我得到了编译器错误,它说Unresolved reference或其他指向B函数的东西。

我在A.cpp的开头有#include "B.h",我的编译器是Linux下的GCC(opensuse 12.3),很抱歉由于版权原因,我不能向您展示代码。

这让我很困惑,我不是C++专业人士,但我知道C++头文件和源文件协同工作的方式,所以如果有人对此有类似的经验,我只是想寻求帮助。

感谢

您想要:

extern "C" {
    #include "B.h";
}

您需要编译B.c并包含其函数

gcc -Wall A.cpp B.c -o my_prog

如果你这样做,请确保在B.h中添加以下保护,以避免C函数的名称被篡改

#ifdef __cplusplus
extern "C" {
#endif
/* declare your C functions here */
#ifdef __cplusplus
}
#endif

创建一个单独的标头-->S.h,在其中包含a.c和B.c的函数()。并将其包含在您想要的任何位置。

对于C标准C头(stdio、stdlib、assert…)的列表,请在C前面加上前缀并删除.h。例如,stdio.h变为cstdio。

For other headers, use
extern "C"
{
  #include "other_header.h"
}