我正在做一项练习(来自Thinking in C++的第三章),但是我遇到了连接两个.cpp文件的问题。
这是练习题:
创建一个头文件(扩展名为“.h”)。在此文件中,通过从以下函数类型中变化参数列表和返回值之间进行选择:void、char、int和float,声明一组函数。现在,创建一个包含您的头文件并为所有这些函数创建定义的.cpp文件。每个函数定义应该简单地打印出函数名称、参数列表和返回类型,以便您知道它已被调用。创建一个包含您的头文件并定义int main()的第二个.cpp文件,其中包含对所有函数的调用。编译并运行程序。
我已经创建了三个文件,但当我尝试编译时,编译器给我这个错误:
undefined reference to `func1()'
undefined reference to `func2(int)'|
undefined reference to `func3(char, int, double)'|
undefined reference to `func4()'|
||=== Build finished: 4 errors, 0 warnings ===|
为什么找不到函数声明呢?
##EDIT
这是我的三个文件:
func_ex.h
void func1(void);
int func2(int i);
char func3(char c, int i, double d);
float func4(void);
func_ex.cpp
#include "func_ex.h"
using namespace std;
void func1(void) {
cout << "void func1(void)" << endl;
}
int func2(int i) {
cout << "int func2(int i)" << endl;
}
char func3(char c, int i, double d) {
cout << "func3(char c, int i, double d)" << endl;
}
float func4(void) {
cout << "func4(void)" << endl;
}
func_ex_main.cpp
#include "func_ex.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
func1();
int i;
func2(i);
char c; double d;
func3(c, i, d);
func4();
}
我使用GCC作为编译器(并且使用Code::Blocks作为IDE,但我认为这不重要)。