今天在c++代码中调用一个c写的函数,发现编译不通过。发现得知c++和c是两种完全不同的编译链接方式,在c++代码中调用c函数,必须要加上extern关键字。
下面举个例子记录下添加方法。
1. 假设一个C的头文件cHeader.h中包含一个函数print(int i),它的代码如下:
#ifndef C_HEADER
#define C_HEADER
extern
void
print(
int
i);
#endif C_HEADER
相对应的实现文件为cHeader.c的代码为:
#include <stdio.h>
#include "cHeader.h"
void
print(
int
i)
{
printf
(
"cHeader %d\n"
,i);
}
现在要在c++代码文件c++.cpp中引用c中的print(int)函数,可以创建一个cppHeader.h:
extern
"C"
{
#include "cHeader.h"
}
#include "cppHeader.h"
int
main(
int
argc,
char
** argv)
{
print(3);
return
0;
}