为什么boost要编译啊?

gemo 2010-01-19 01:56:56
为什么不全部用头文件呢

这个问题困扰着我。。。
...全文
671 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
suanyuan 2010-03-01
  • 打赏
  • 举报
回复
有 compiler 支援編譯 template
nscboy 2010-02-28
  • 打赏
  • 举报
回复
感觉主要是为了加快后期适用boost的工程的编译速度.
否则的话,一个几行的程序都要编译半天.也是一件很难忍受的事情.
这要不适用预编译的化,要白白浪费多少时间啊.这简直等于谋杀生命啊
  • 打赏
  • 举报
回复
有的模块先编译一下会节省很多时间的,比如thread
某某9 2010-02-02
  • 打赏
  • 举报
回复
哦。原来!
mitterand 2010-01-29
  • 打赏
  • 举报
回复
就算编译后,也要用头文件吧。
就算是C++自己的库也要用头文件。
再说BOOST很多库是用其他语言编译的。

[Quote=引用 2 楼 gemo 的回复:]
LS的 我是说boost为什么不全部用头文件
[/Quote]
mitterand 2010-01-29
  • 打赏
  • 举报
回复
就算编译后,也要用头文件吧。
就算是C++自己的库也要用头文件。
再说BOOST很多库是用其他语言编译的。

[Quote=引用 2 楼 gemo 的回复:]
LS的 我是说boost为什么不全部用头文件
[/Quote]
fo1_sky 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wangxing221 的回复:]
为什么不把编译好的东西放出来呢?省的每个人都要重新编译
[/Quote]
这就是开放源代码了,不然,还谈什么源码开放
wangxing221 2010-01-28
  • 打赏
  • 举报
回复
为什么不把编译好的东西放出来呢?省的每个人都要重新编译
luoweisong 2010-01-26
  • 打赏
  • 举报
回复
boost编译之后,使用boost库,再编译自己的cpp文件时就快得多了
linglongyouzhi 2010-01-22
  • 打赏
  • 举报
回复
貌似有些东西是平台相关的
jackyjkchen 2010-01-19
  • 打赏
  • 举报
回复
再者,从模块化编程的角度,我们通常不希望所有的代码都集中在一块,可能一个独立的功能就希望做成一个单独的库,声明统一和固定下来,以后可以就单独修改某个库的实现而不用全部重新编译。

举个简单例子,微软的C标准库是以dll形式提供的,假如某个库函数有bug,那么只要微软修复了这个bug,那你的程序不用重新编译,就自动也修复了bug
jackyjkchen 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gemo 的回复:]
重复包含的问题 用条件编译可否解决?
为什么一定要编译成二进制的库呢?boost中绝大部分类都只有hpp 都不能编译成二进制的库啊
[/Quote]
之所只有hpp,是因为他们是泛型类,使用模板,模板无法分离编译,只能放在hpp里。

至于二进制库的问题,从纯技术角度说将少则几十个多则甚至几十万个源文件编译为一个lib、dll、so、a文件供人调用要清爽得多;

从商业角度看,如果没有二进制库dll,微软的所有sdk、api都以源文件形式提供,他的商业机密如何保护?
gemo 2010-01-19
  • 打赏
  • 举报
回复
重复包含的问题 用条件编译可否解决?
为什么一定要编译成二进制的库呢?boost中绝大部分类都只有hpp 都不能编译成二进制的库啊
jackyjkchen 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gemo 的回复:]
声明和实现是否分开 就能代码风格的好坏吗?

java和c#都是不分开的好像
[/Quote]
C#和java没有头文件,当然不分。

C++如果不分的话会有许多严重的问题,比如重复包含,比如无法编译二进制库(没有cpp文件)。

一定要脱离一个程序只有一个cpp的那种helloworld程序的思想
gemo 2010-01-19
  • 打赏
  • 举报
回复
声明和实现是否分开 就能代码风格的好坏吗?

java和c#都是不分开的好像
jackyjkchen 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gemo 的回复:]
LS的 我是说boost为什么不全部用头文件
[/Quote]
看来是个新手,对于非泛型(模板)编程,生命和实现应该分开,如果说全用h文件,boost将是一个代码风格极差没人用的垃圾库
gemo 2010-01-19
  • 打赏
  • 举报
回复
比如?全局变量?
taodm 2010-01-19
  • 打赏
  • 举报
回复
因为不是所有东西都可以纯用头文件。
gemo 2010-01-19
  • 打赏
  • 举报
回复
LS的 我是说boost为什么不全部用头文件
jackyjkchen 2010-01-19
  • 打赏
  • 举报
回复
也可以不编译,你把需要的boost的Cpp文件全部加进工程里或makefile里,在使用时再编译。

相信你这样玩过一次以后就不想再玩第二次

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧