在C ++中调用C函数

时间:2014-10-01 12:56:53

标签: c++ c

我有一个中等长度的C文件,其中包含许多函数(不在头文件下 - 只是一堆函数),我希望在我正在开发的C ++项目中收集和使用。

现在我已经阅读了extern函数,但我只看到它适用于.h文件下的小C函数。

但我希望包含这些功能而不会弄乱C文件本身,因为我并不真正理解它们 - 我只需要功能"引擎盖下#34;。这个问题有简单的解决方案吗?

3 个答案:

答案 0 :(得分:2)

是的,您只需要在C ++代码中看到一些extern "C"声明:

extern "C" {
    int my_C_function_1(void);
    int my_C_function_2(void);
}

这可以放在合适的标题中,或者如果它只在一个特定的.cpp文件中使用,那么你可以把它放在那里。

请注意,如果您的C函数已在某个C头中声明,您可以在.cpp文件中执行此操作:

extern "C" {
#include "my_C_header.h"
}

答案 1 :(得分:0)

您需要制作C ++头文件myheader.hh。它以

开头
 #ifndef MYHEADER_INCLUDED
 #define MYHEADER_INCLUDED
 extern "C" {

然后你声明所有你的公共C函数,类型,宏等....最后你用

结束它
 }; // end extern C
 #endif MYHEADER_INCLUDED

在您的C ++程序中,添加#include "myheader.hh"

或者(而不是使用myheader.hh),您可以在C ++文件中添加(在其他包含之后,但在C ++代码之前)

extern "C") {
#include "your-C-code.c"
};

(但它可能不起作用)。

答案 2 :(得分:0)

您需要通常在头文件中声明这些函数,以便从C ++中调用它们。如果使用C编译器编译这些函数,那么您确实需要用extern "C"包围声明; e.g。

extern "C" {
int foo(int, int);
}

如果您有源代码,那么您也可以修改它以包含头文件(无extern "C")并使用C ++编译器编译函数。