我有一个程序可以找到数字的倒数,但是主程序是用C编写的,而reciprocal
函数是用c++编写的。接下来,我有一个头文件reciprocal.hpp
,其中包含一些条件编译代码,使reciprocal
函数成为外部函数功能。有人可以向我解释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;
}
reciprocal.cpp
#include<cassert>
#include "reciprocal.hpp"
double reciprocal(int i)
{
assert( i != 0);
return 1.0/i;
}
reciprocal.hpp
#ifdef __cplusplus
extern "C"
{
#endif
extern double reciprocal(int i);
#ifdef __cplusplus
}
#endif
我不了解
reciprocal.hpp
中发生了什么。请帮忙! 最佳答案
如果您引用的是ifdef
,则它们仅允许将 header 编译为C++时将该函数导出到C中。 extern
行仅定义了reciprocal
的函数原型(prototype)。