p186~p188:
函数声明
1、函数只能定义一次,但是可以声明多次。
2、函数的接口:返回类型 + 函数名 + 形参类型
3、为什么要在头文件中进行函数声明???在源文件中定义?暂时理解到,这么做可以增强可读性。
4、含有函数声明的头文件应该被包含到定义函数的源文件中。(例如:#include "diy.h")
分离式编译 & 6.8 & 6.9
1、分离式编译:把源文件割成好几块放在不同的文件夹下。最终要生成可执行文件,就必须告诉编译器源文件在哪里。
具体操作如下:
>源文件内容(三个文件放在同一个文件夹下面。)
fact.h
int fact(int val);
fact.cpp
#include "fact.h"
int fact(int val)
{
if (val == )
return ;
return val * fact(val - );
}
factMain.cpp
#include <iostream>
#include "fact.h"
using namespace std;
int main()
{
cout << fact() << endl; // output=6
return ;
}
>开始编译 !
1)一起编译的方法
$ g++ factMain.cpp fact.cpp -o lovecpp -std=c++ $ lovecpp
2)真*分离式编译
第一步
$ g++ -c factMain.cpp $ g++ -c fact.cpp
执行这两个操作后会生成fact.o、factMain.o,接下来要把object code(*就是.o文件)链接成可执行文件。
$ g++ factMain.o fact.o -o lovecpp
执行后生成lovecpp.exe。这样分几步的好处是:如果修改了其中一个源文件,就重新编译改动的就好了。
6.10
#include <iostream>
using namespace std;
void swap(int *p, int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
int main()
{
int a = , b = ;
cout << a << " " << b << endl;
swap(a , b);
// 交换之后
cout << a << " " << b << endl;
/* output:
3 4
4 3
*/
return ;
}
修正:
#include <iostream>
using namespace std;
void swap(int *p, int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
}
int main()
{
int a = , b = ;
cout << a << " " << b << endl;
swap(&a , &b);
// 交换之后
cout << a << " " << b << endl;
/* output:
4
3
*/
return ;
}
但是上一个程序也有正确输出??