我有一个中等长度的C文件,其中包含许多函数(不在头文件下 - 只是一堆函数),我希望在我正在开发的C ++项目中收集和使用。
现在我已经阅读了extern
函数,但我只看到它适用于.h文件下的小C函数。
但我希望包含这些功能而不会弄乱C文件本身,因为我并不真正理解它们 - 我只需要功能"引擎盖下#34;。这个问题有简单的解决方案吗?
答案 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 ++编译器编译函数。