打印

编译问题

[复制链接]
956|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2012-2-20 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//Filea.h |
|
void func(const char *, int i); |
|
——————————————————————————————
//Fileb.cpp | //Filec.cpp
#include "Filea.h" | #include<iostream>
| #include "Filea.h"
void func(const char *, int i) | int main()
{ | {
...//函数定义 | ...
} | func("Hello", 5);
| ...
| }

如上三个文件在FIlec.cpp调用函数func()的过程中,计算机是怎么运作的?因为func()的函数定义是放在Fileb.cpp里面的,而原型却又放在了另外一个头文件里面。难道在main()函数里面调用func()的时候系统又要再通过Filea这个头文件去找函数func()的定义吗?C++ primer里面说建议把函数原型,常量,类声明等放在头文件里面,再把这些内容的具体定义放在另外一个cpp文件里面,请问这样做到底有什么好处,如果把Filea和Fileb合并成一个文件,再让Filea去包含这个新文件有什么不同的吗?各位在实际编程中又是否是这样做?

相关帖子

沙发
火箭球迷| | 2012-2-20 17:22 | 只看该作者
在编译的时候,.h里的内容就会被复制到.cpp里去了,编译时只要有函数的声明就行,也就是extern fun()
到链接的时候在到各个.o文件里找

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝