废话不多说直接上源码
你的文件本来长这样
//>>>cat main.cpp
#include <iostream>
int sum(int a, int b){
return a+b;
}
void swap(int &a, int &b){
int t;
t = a;
a = b;
b = t;
}
int main() {
int a = 1;
std::cout << "a = " << a << std::endl;
int b = 2;
std::cout << "b = " << b << std::endl;
std::cout << "sum(a, b) = " << sum(a,b) << std::endl;
swap(a, b);
std::cout << "swap(a, b)" << std::endl;
std::cout << "a = " << a << std::endl;
return 0;
}
方法1
只需要在main()之前声明一下然后正常编译两个文件就好了
//>>>cat anotherFile.cpp
int sum(int a, int b){
return a+b;
}
void swap(int &a, int &b){
int t;
t = a;
a = b;
b = t;
}
//>>>cat main.cpp
#include <iostream>
int sum(int a, int b);
void swap(int &a, int&b);
int main() {
int a = 1;
std::cout << "a = " << a << std::endl;
int b = 2;
std::cout << "b = " << b << std::endl;
std::cout << "sum(a, b) = " << sum(a,b) << std::endl;
swap(a, b);
std::cout << "swap(a, b)" << std::endl;
std::cout << "a = " << a << std::endl;
return 0;
}
>>>g++ main.cpp anotherFile.cpp
>>>./a.out
方法2
在方法1的基础上只需用一个头文件代替函数的声明,其他照旧。
没错,头文件不一定要以.h结尾,它就是一个名字罢了。
//>>>cat main.cpp
#include <iostream>
#include "tools.kaiyan"
int main() {
//...
return 0;
}
//>>>cat tools.kaiyan
#pragma once //这个不能少
int sum(int a, int b);
void swap(int &a, int &b);
为什么我要写这个
因为我tm上课的时候,函数的定义和头文件和class和namespace是一节课直接一起讲的,老师又举了一个及其糟糕的例子,那里例子里函数名,命名空间,头文件的命名,以至于成员变量的名称都是一样的,这tm谁听得懂?