学习c ++,使用标题文件和函数的前向声明。
文件1: ReadNum.cpp
#include<iostream> using namespace std; int ReadNumber() { int x; cout << "Enter a number: "; cin >> x; return x; }
文件2: WriteAnswer.cpp
#include<iostream> using namespace std; void WriteAnswer (int ans) { cout << "The answer is: " << ans << endl; }
文件3: Add.cpp
#include<iostream> using namespace std; int Add (int x, int y) { return x+y; }
标题
文件4: Task1.h
#ifndef TASK1_H #define TASK1_H int ReadNumber (); void WriteAnswer (int); int Add (int, int); #endif
文件5: main.cpp
#include<iostream> #include"Task1.h" using namespace std; int main() { int x = ReadNumber(); int y = ReadNumber(); WriteAnswer(Add(x,y)); cin.get(); // halting the prompt window cin.ignore(); // halting the prompt window return 0; }
所有文件都在同一个文件夹中。 以下代码也将正确编译和显示。
#include<iostream> #include"WriteAnswer.cpp" #include"ReadNumber.cpp" #include"Add.cpp" using namespace std; int main() { int x = ReadNumber(); int y = ReadNumber(); WriteAnswer(Add(x,y)); cin.get(); // halt prompt window cin.ignore(); return 0; }
有谁知道为什么.h文件不会向前声明函数?
是否可能因为文件未包含在项目中(即不使用CodeBlocks或Visual type IDE)
答案 0 :(得分:0)
首先,通过#including
.cpp
个文件,您可以让编译器看到它们的内容。
不要这样做 - 包括头文件。
其次,当你说&#34;为什么.h文件不会转发声明函数&#34;它确实声明了这些函数,但是如果你没有将定义的源文件添加到你的构建(项目,makefile等),你将会收到链接器错误。