gpt4 book ai didi

c++ - 如何从 C++ 中的另一个头文件调用函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:53 26 4
gpt4 key购买 nike

我有以下 3 个文件(1 个 *.cpp 和 2 个 *.hpp):

主程序文件:

// test.cpp

#include<iostream>
#include"first_func.hpp"
#include"sec_func.hpp"

int main()
{
double x;
x = 2.3;
std::cout << sec_func(x) << std::endl;
}

-first_func.hpp header :

// first_func.hpp

...

double first_func(double x, y, x)
{

return x + y + x;
}

-sec_func.hpp header :

// sec_func.hpp

...

double sec_func(double x)
{
double a, b, c;
a = 3.4;
b = 3.3;
c = 2.5;

return first_func(a,b,c) + x;
}

如何从 sec_func.hpp 文件中正确调用 first_func?

最佳答案

对于大多数函数,实现应该驻留在一个编译单元中,即一个将要自行编译并编译一次的文件。

头文件不是自己编译的*,而是被多个编译单元包含。

这就是为什么您的函数定义应该驻留在编译单元(如 .cpp)中,而不是在 header 中。 header 应仅包含声明(即没有主体),足以让其他编译单元知道如何调用它们。


为了完整起见,一般需要在header中定义的函数(作为异常(exception))有:

  • 内联 函数
  • 模板函数**(还有类)

脚注:

* header 实际上可以预编译,但这是加速编译的解决方案,并且不会改变它们的目的;不要对此感到困惑。
** 如果您使用显式模板实例化,您可以将模板函数定义放在 header 之外,但这种情况很少见;关键是每个想要实例化模板(向其应用参数)的编译单元都需要有其完整的定义,这就是模板函数定义也进入标题的原因。

关于c++ - 如何从 C++ 中的另一个头文件调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com