• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【c++primer,5e】函数声明&分离式编译

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

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 == 1)
        return 1;
    return val * fact(val - 1);
}

factMain.cpp

#include <iostream>
#include "fact.h"
using namespace std;
int main()
{
    cout << fact(3) << endl; // output=6
    return 0;
}

>开始编译 !

1)一起编译的方法

$ g++ factMain.cpp fact.cpp -o lovecpp -std=c++11

$ lovecpp
6

 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 = 3, b = 4;
    cout <<    a << " " << b << endl;
    swap(a , b);
    // 交换之后
    cout <<    a << " " << b << endl;
    /* output:
     3 4
     4 3
     */
    return 0;
}

 修正:

#include <iostream>
using namespace std;
void swap(int *p, int *q)
{
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}
int main()
{
    int a = 3, b = 4;
    cout << a << " " << b << endl;
    swap(&a , &b);
    // 交换之后
    cout << a << " " << b << endl;
    /* output:
4
3
     */
    return 0;
}

但是上一个程序也有正确输出??


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
讨论:C#Gridview增加超链接列发布时间:2022-07-13
下一篇:
C#HttpWebResponse请求常见的状态码发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap