我在理解源文件和头文件方面遇到了困难。 假设
1)我有一个源文件(functions.cpp
),其中包含位于/Users/xyz/Desktop/functions.cpp
的名为'int add(int x,int y)'的函数。
2)包含源文件(functions.cpp)中函数的声明的头文件(functions.h
)放在/Users/xyz/Documents/function.h
3)包含'main()'函数的其他源文件(main.cpp
)需要调用'functions.cpp'中定义的'add()'函数。源文件'main.cpp'是位于/Users/xyz/Downloads/main.cpp
我将这些文件放在不同的位置,以便我能更好地理解这些概念。
那么,如何使用function.cpp
将main.cpp
与functions.h
关联起来。
#include " "
我应该在上面include
使用的路径是什么?
另外,据我所知,.h文件提供了声明的声明一些其他地方的函数,并且编译器需要声明才能调用在定义的其他一些文件或函数中定义的函数。是对的吗?如果我错了,请纠正我。
答案 0 :(得分:5)
#include "functions.h"
您的代码不知道您如何选择安排源树。硬编码路径是为了赢得任何必须维护此代码的人的仇恨(包括你从现在开始的六个月)。
您的构建系统 - 无论它是什么 - 都可以处理这些路径。这可能很简单:
g++ -I/Users/xyz/Documents -c functions.cpp
您对声明/定义如何工作的陈述基本上是正确的。
答案 1 :(得分:3)
你的第一个问题没有答案。 C ++没有定义如何找到头文件,这取决于编译器,它们都有点不同。如果您需要答案,则必须在编译器的文档中查找详细信息。我建议你把所有东西放在同一个目录里,不要再担心了。
在你的问题的第二部分,你的理解似乎对我很好。
答案 2 :(得分:0)
您应该在主文件中包含头文件的确切路径:
#include "/Users/xyz/Documents/function.h"
希望得到这个帮助。
问候。
答案 3 :(得分:0)
您使用functions.h
在functions.cpp
和main.cpp
中加入#include
,然后同时编译main.cpp
和functions.cpp
。然后链接器链接两个结果对象文件。在main.cpp中包含functions.h将允许您在main.cpp文件中调用functions.h中的函数
对于文件路径,只要您指定编译器找到代码所需的路径就可以了。
答案 4 :(得分:0)
您可以使用完整路径
#include "/Users/xyz/Documents/function.h"
或相对路径(通常更优选)
#include "../Documents/function.h"
在链接最终可执行文件时,不要忘记指定.obj
文件的完整或相对路径;)