gpt4 book ai didi

C++。避免多个文件项目中的交叉链接

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:28 26 4
gpt4 key购买 nike

我最近为我的大学构建了许多 C++ 项目。它们由多个文件和一个 Makefile 组成。所有内容均位于 prj 文件夹中,其中包含 Makefile,源文件位于 src 文件夹中, header 位于 inc 文件夹中。 Makefile 将其编译为 obj 文件夹中的目标文件,然后将其链接到最终程序。

我确实遇到了许多奇怪的错误,我将其分解为这些错误,例如我已将 Matrices.h 包含在 Vector.h 文件中,将 Vector.h 包含在 Matrix.h 中。编译器表示 Matrix 类中不存在某些方法。

我必须将Vector.h包含在Matrix.h中。然后,将 Matrix 包含在 main.cpp 中。我在所有文件中使用 sqrt()pow() 函数。

现在我想知道避免在 Vector.h 中连续声明 <cmath> 库,然后在 Matrix.h 中,最后在 main.cpp 中声明是否正确?我宁愿在 Vector.h 中声明它并保留它。编译器是g++及其Linux Debian。

我使用预处理器指令:

#ifndef VECTOR_HH //or MATRIX_HH etc.
#define VECTOR_HH

#include <cmath>

//class body


#endif`

最佳答案

好的做法是定义一个通用头文件,您可以在其中包含所有必需的头文件以及头保护。

考虑例如您声明的 common-hdr.h

#ifndef COMMON-HDR_HH
#include <cmath>
#include "Vector.h"
#include "Matrix.h"

// other common files

#endif

现在您可以将 common-hdr.h 添加到所有文件中。

关于C++。避免多个文件项目中的交叉链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875997/

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