使用autotools从C++使用C代码

drk*_*atz 5 c c++ linker

我正在用C编写的一些代码编写一个(我的第一个)C++类,但是我只能通过在extern块中声明C函数来编译C++.我的项目使用autotools; 有没有办法自动化这个过程,所以我不必维护两个头文件?

epa*_*tel 15

在C代码头文件中的#ifdef中使用extern块

头文件的开头

#ifdef __cplusplus
extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)

...并在头文件的末尾

#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)

这样它就可以包含在C和C++源代码中


Aut*_*act 3

是的,创建包装器头文件,其中包括 C 头文件,如下所示......

//Wrapper.h
#ifdef __cplusplus
extern "C"
{

    #include "Actual.h"
}
#else
    #include "Actual.h"
#endif


//Use.cpp
#include "Wrapper.h"

int main()
{
    return 0;
}

//Use.c
#include "Wrapper.h"
/*or #include "Actual.h" */

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