我有一个程序来查找数字的倒数,但主程序是用C语言编写的,reciprocal函数是用c ++编写的.接下来我有一个头文件reciprocal.hpp,它有一些条件编译代码,使reciprocal函数成为一个extern函数.Can有人请解释一下reciprocal.hpp程序中有什么.
main.c中
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char **argv)
{
int i;
i = atoi(argv[1]);
printf("\nThe reciprocal of %d is %f\n",i,reciprocal(i));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
reciprocal.cpp
#include<cassert>
#include "reciprocal.hpp"
double reciprocal(int i)
{
assert( i != 0);
return 1.0/i;
}
Run Code Online (Sandbox Code Playgroud)
reciprocal.hpp
#ifdef __cplusplus
extern "C"
{
#endif
extern double reciprocal(int i);
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
我不明白发生了什么reciprocal.hpp.请帮助!!
C++编译器总是定义__cplusplus符号.所以,标题正在做的是将原型包装进去
extern "C" { ... }
Run Code Online (Sandbox Code Playgroud)
这告诉编译器不要对该块中包含的内容执行名称修改.现在,C代码可以通过其原始名称引用该函数,就好像它是C函数一样.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |