0

我在理解源文件和头文件方面遇到了困难。认为

1)我有一个源文件(functions.cpp),它在位置包含名为“int add(int x,int y)”的函数/Users/xyz/Desktop/functions.cpp

2)functions.h包含源文件(functions.cpp)中函数声明的头文件()放在/Users/xyz/Documents/function.h

3)其他main.cpp包含'main()'函数的源文件()需要调用'functions.cpp'中定义的'add()'函数。源文件'main.cpp'位于/Users/xyz/Downloads/main.cpp

我将这些文件放在不同的位置,以便更好地理解这些概念。

那么,我如何链接function.cppmain.cpp使用functions.h.

   #include "   "

我应该在上面使用什么路径include

另外,据我了解,.h 文件提供了在其他地方定义的函数的声明,并且编译器需要声明才能调用在其他一些文件中定义的函数或尚未定义的函数。是对的吗?如果我错了,请纠正我。

4

5 回答 5

5
#include "functions.h"

您的代码不应该知道您选择如何排列源代码树。硬编码路径是为了赢得任何必须维护此代码的人的仇恨(包括六个月后的你)。

你的构建系统——不管它是什么——可以处理这些路径。这可能很简单:

g++ -I/Users/xyz/Documents -c functions.cpp

您对声明/定义如何工作的陈述基本上是正确的。

于 2012-08-03T21:21:24.563 回答
3

你的第一个问题没有答案。C++ 没有定义如何找到头文件,这取决于编译器,它们的做法都略有不同。如果您想要答案,您必须在编译器的文档中查找详细信息。我建议您将所有内容都放在同一个目录中,不要再担心了。

在你问题的第二部分,你的理解对我来说似乎很好。

于 2012-08-03T21:20:30.503 回答
0

您应该在 main 中包含头文件的确切路径:

#include "/Users/xyz/Documents/function.h"

希望这有帮助。

问候。

于 2012-08-03T21:19:30.650 回答
0

您包含functions.hinfunctions.cppmain.cpp使用,#include然后编译两者main.cppfunctions.cpp。然后链接器链接两个生成的目标文件。您在 main.cpp 中包含 functions.h 将允许您从 main.cpp 文件中的 functions.h 调用函数

至于文件的路径,只要您向编译器指定查找代码所需的路径就可以了。

于 2012-08-03T21:20:43.513 回答
0

您可以使用完整路径

#include "/Users/xyz/Documents/function.h"

或相对路径(通常更可取)

#include "../Documents/function.h"

.obj当您链接最终可执行文件时,不要忘记指定文件的完整或相对路径;)

于 2012-08-03T21:21:38.307 回答