我有一个程序可以找到数字的倒数,但是主程序是用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)。

07-26 09:30