`
yidongkaifa
  • 浏览: 4097597 次
文章分类
社区版块
存档分类
最新评论

boost在实际项目中的使用

 
阅读更多

对于boost在实际项目中的使用应该有一个相对客观的态度,既不能过分使用,在项目中铺满boost,又不能对其畏之如虎,不敢使用。

我想实际游戏开发中,我们的团队伙伴大多应该是跟我一样程度的----对c++有一定的了解,又绝对成不上专家。所以,我们使用boost应该有下面这些原则或者说是注意事项:

1、不要认为boost非常庞大就一概否定,认为游戏客户端里面绝对不能或者完全没有必要加boost。 我们完全可以使用bcp裁剪我们需要的模块,虽然boost的牵连性还是很大的,裁剪一个智能指针有可能会裁剪出一大堆文件,但是至少不会把100mb+的代码都加到项目中。

2、我们常用的一些boost库已经加到tr1里面了,我们常用的开发环境又都是支持tr1的。vs2010、xcode、android ndk。所以如果我们只是用这些功能的话那么确实没有必要引入boost。

3、尽量避免需要编译的boost库的使用。只使用头文件形式的。如果一定要使用的话,那么可以选择把实现文件直接加到项目中,当做我们自己的代码来进行维护。这样ios和android环境维护起来要方便很多。 如果我们只在windows下进行开发,那么boost的auto_link机制也还方便。至少最近几个版本的boost编译起来已经相当方便了,方便到不需要教程的地步了。

4、尽量避免平台相关的库的使用。虽然像filesystem这样的库使用起来很方便,boost也帮助我们封装了平台依赖。但是还是尽量要避免这些库的使用。因为boost虽然支持ios和android,但并不意味着这些库在ios和android下都能正常工作。比如我之前就碰到过,filesystem的某个函数在ipad2上会崩溃,但是在iphone和ipad1上面又正常。还有boost::mutex在ios下怎么也锁不住,但是自己简单封装下pthread又可以正常工作。所以与平台紧密相关的操作还是自己维护的好,否则就是要替boost debug代码了。

5、不要认为boost什么都好,就在代码里面充斥着boost的代码。因为boost再工业化强度,也仅仅是“准”标准库。不是人人都会使用boost,也不是人人都愿意学习boost。代码中大量出现mpl什么的绝对不是一个聪明的选择。

6、boost相关的头文件,要么加入到预编译头里面。要么放到实现文件里面。千万不要放到会被大量引用,但是又没有预编译的头文件。因为boost里面大量充斥着模板,编译起来时间相当漫长。

7、我常用的一些boost库:

smart_ptr function bind 这三个不用多说了,已经加到tr1里面的,如果还不会的话,就跟c++程序员不会stl一样,直接面壁去。

algorithm/string 字符串算法库,这个相当好用并且很基础。如果不用这个话,那肯定还是要自己重复造轮子的。

format 这个见仁见智,如果不喜欢它的语法的话,那就自己封装个。这个比vsnprintf最大的好处就是安全性,不会因为参数传错而崩溃

pool 这个还没有真正使用,不过如果我有内存池的需要的话,绝对不会介意使用这个

regex 这个也是加到tr1里面的,不过ios下面貌似没有。不管怎么说,如果用到正则表达式,这个还是首选。虽然它有一大堆实现文件。

一些我个人绝对不会使用的库:

test 用起来很不方便,不如用cxxtest

preprocessor 游戏开发需要词法分析吗? 加上这个库会让你的工程编译时间变成一个世纪那么长

mpl 牛人可以使用它来封装自己的模板库,但是接口中一定不要暴露出相关的东西。因为这个东西可不是人人都懂的。

lambda 虽然tr1中也有lambda,但是还是不要为了省两行代码加入匿名函数了。 自己看着爽了,别人就都看不懂了。毕竟c++是c++,java是java

date_time 这么简单的东西,还是自己封装下好了。牵扯到夏时令还有时区的时候,还是自己写的更加放心

property_tree 可能我会封装一个类似的兼容xml和json和ini的配置读取方式,但是肯定不会是property_tree这样的形式,应该更加简洁一些,即便扩展性差些。

thread 前面说过了,自己封装下也不麻烦,不就是pthread吗?

分享到:
评论

相关推荐

    NDK下使用boost示例

    在Android开发中,NDK(Native Development Kit)允许开发者使用C和C++编写原生代码,以提升性能和实现特定的底层功能。...在实际项目中,你需要根据自己的需求选择合适的Boost组件,并按照上述步骤进行配置和集成。

    boost log 简单使用

    在IT行业中,Boost库是一个非常著名的C++工具集,它包含了许多高质量的库,其中Boost.Log就是用于日志记录的一个强大模块。...在实际开发中,不断实践和探索Boost.Log的高级特性,能够帮助你构建出更加健壮的应用程序。

    C++使用的boost库

    Boost库是C++编程语言中的一个开源库集合,它为标准库提供了许多扩展,增加了大量高效、高质量的工具和库,极大地丰富了C++的功能。...在实际项目中,熟练掌握Boost库的使用,无疑会提升开发者的技能水平和代码质量。

    boost图论算法使用说明书

    阅读这份文档,读者可以深入理解如何在实际项目中利用Boost库实现高效的图论算法,提升代码质量和解决问题的能力。 总的来说,熟悉和掌握Boost图论算法使用不仅能够提高编程效率,还能帮助开发者解决复杂的算法问题...

    boost API 中文库

    通过阅读"boost库操作指南.chm",你可以逐步了解和掌握Boost库的每个组件,学会如何在实际项目中应用这些工具,解决C++开发中遇到的复杂问题。这个中文版的手册不仅提供理论知识,还包含实例演示和详细的API参考,是...

    boost下ssl的使用服务端

    在IT行业中,Boost库是一个广泛使用的C++库,它提供了许多功能强大的工具,包括...在实际项目中,根据需求可能还需要实现更复杂的逻辑,比如多线程处理、负载均衡、会话管理等,但基础的SSL服务端设置就是以上所述。

    标准C_C++_boost基础学习_boost开发

    综上所述,学习“标准C C++ STL boost基础 boost开发”不仅需要掌握C++语言的基础和STL的使用,还要深入了解Boost库的各个组件,以及如何在实际项目中应用和开发Boost库。通过阅读提供的学习资源,可以逐步提升C++...

    cmake使用boost库脚本编写

    在C++编程中,Boost库是一个非常受欢迎的开源库...记得根据实际项目需求调整`CMakeLists.txt`中的设置,确保正确链接所需的Boost库组件。在开发过程中,如果遇到问题,查阅CMake和Boost的官方文档通常都能找到答案。

    C++ Boost 库中文文档

    文档通常包含了详细的功能介绍、使用示例和API参考,使得开发者能够快速掌握Boost库的用法,并将其应用到实际项目中。 总之,C++ Boost库是一个强大的工具集,极大地丰富了C++的标准库功能,而中文文档的出现则为...

    C++BOOST中文帮助文档.zip

    通过"C++BOOST中文帮助文档.chw",用户可以深入理解Boost库中的每一个组件,了解其使用方法、设计原理和最佳实践,从而在实际项目中充分利用Boost库的优势,提高代码质量和效率。这份文档对于提升C++程序员的技能...

    BOOST学习资料整理收集

    3. **实践应用**:通过编写实际项目或练习来掌握Boost库的使用,实践是最好的老师。 4. **阅读源码**:对于更高级的学习,可以研究Boost库的源码,理解其设计思想和实现细节。 四、Boost库在实际开发中的应用: 1. ...

    编译完成的Boost1.61版本

    当你在C++项目中使用Boost库时,需要将这个目录添加到你的编译器的头文件搜索路径中。这样,当你在代码中`#include <boost/...>`时,编译器就能找到相应的头文件。例如,如果你想使用Boost的共享指针(shared_ptr)...

    arm架构下的boost库文件

    在实际项目中,你可能需要链接特定的Boost库到你的应用程序中。例如,如果你使用了Boost.Thread,需要在编译时添加`-lboost_thread -lpthread`选项。如果是在Linux环境下,还需要考虑动态链接或静态链接的选择。 ...

    boost1.49 include文件

    在 Boost 1.49 版本中,`include`文件夹下的内容将提供所有Boost库的头文件,开发者可以将它们直接包含到自己的C++项目中以利用Boost的功能。 例如,Boost.Asio库是用于网络编程的,提供了异步I/O操作,如套接字、...

    boost安装下载-boost.rar

    Boost库是C++编程语言中的一个开源库集合,它提供了大量的高效、跨平台的库,以支持各种编程任务,如算法、数据结构、数学运算...在实际应用中,不断学习和探索Boost的不同部分,将有助于你成为一个更优秀的C++开发者。

    编译好的完整boost库

    例如,如果项目中使用了Boost.Thread,那么需要确保链接器指向了对应的lib文件,如libboost_thread-vc140-mt.lib(对于多线程静态库)或者boost_thread-vc140-mt.dll(对于动态库)。 Boost库包含了众多功能强大的...

    传输文件实例(boost)

    在这个实例中,我们将专注于使用Boost库,特别是Boost.Asio,来实现在网络上传输文件。Boost是一个广泛使用的C++库集合,它提供了许多高级功能,包括网络编程接口。Boost.Asio是Boost库的一部分,它为异步I/O操作...

    Android boost 1.69静态库

    为了在 Android 项目中使用 Boost 1.69 静态库,开发者需要将库添加到项目的 NDK 配置中。这通常涉及修改项目的 CMakeLists.txt 文件,指示编译器如何链接静态库。例如,添加以下代码来链接 arm64-v8a 架构的 Boost ...

    boost thread dll 应用

    在这个"boostDemo"项目中,可能包含了创建线程、同步操作以及线程间通信等基本示例,帮助你了解如何在实际应用中使用Boost.Thread DLL。如果有任何疑问或遇到问题,可以按照描述中的邮箱地址联系作者寻求帮助。 总...

    Boost Demo

    为了在Android Studio中使用Boost,开发者需要配置NDK(Native Development Kit),设置CMake或NDK-Build脚本来编译和链接Boost库。同时,需要注意的是,由于Boost库庞大,可能不是所有组件都适合在资源有限的移动...

Global site tag (gtag.js) - Google Analytics