作业说:写一个由两个源文件组成的程序。第一个(Main.c)包含main()函数,并为变量i赋值。第二个源文件(Print.c)将i乘以2并打印出来。 Print.c包含函数print(),可以从main()调用。
在我尝试执行此任务时,我创建了三个文件: main.cpp中
#include <stdio.h>
#include "print.h"
using namespace std;
// Ex 1-5-3
// Global variable
int i = 2;
int main() {
print(i);
return 0;
}
print.cpp:
#include <stdio.h>
#include "print.h"
using namespace std;
// Ex 1-5-3
// Fetch global variable from main.cpp
extern int i;
void print(int i) {
printf("%d", 2*i);
}
print.h:
#ifndef GLOBAL_H // head guards
#define GLOBAL_H
void print(int i);
#endif
我编译了print.cpp,当我尝试编译并运行main.cpp时,它说: [链接器错误]对'print(int)'
的未定义引用为什么它不接受我在print.cpp中对void print(int i)的定义,并通过头文件print.h引用它?谢谢!
答案 0 :(得分:2)
不确定您正在使用哪种编译器,但我已将其用于Linux / gcc:
$ gcc main.cpp print.cpp -o test
$ ./test
$ 4
$