做自己的代码库要注意的问题

本文探讨如何创建并管理自定义代码库,包括头文件的合理放置、头文件与源文件的分离策略,以及如何确保多个项目共享更新版本。通过实例说明避免库冲突的方法,并强调管理库目录的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    随着学习的增多,以及对相关的数据结构和算法的实现,发现很多简单的数据结构和输入输出程序最好是使用自己的版本。比如每次使用下面的代码肯定是不可避免的

for(list::iterator i=li.begin();i!=li.end();i++)

cout<<*i<<" ";

cout<<endl;

    上面的代码是不是很麻烦呢?你是否想过这样使用自己的测试代码呢?

list_ li;

li.print_list();

    那就自己写一些简单的io,list库存放起来吧,每次都使用自己的,既熟悉又方便。

    当然,自己的代码只有管理妥当了才会使用方便。这里主要包括:头文件的命名、头文件目录的放置、文件内部类的设计等。

    第一,头文件的放置:你可能希望有一个自己的math.h,然后在项目中使用#include"math.h"或者#include<math.h>,但是糟糕的事情要发生了编译器有可能出现:


1>c:\program files\microsoft visual studio 9.0\vc\include\cmath(21) : error C2039: “acosf”: 不是“`global namespace'”的成员

1>c:\program files\microsoft visual studio 9.0\vc\include\cmath(21) : error C2873: “acosf”: 符号不能用在 using 声明中

1>c:\program files\microsoft visual studio 9.0\vc\include\cmath(21) : error C2039: “asinf”: 不是“`global namespace'”的成员

等。

    这是因为你的math.h与系统库中的math.h冲突了。怎么办呢?你见过boost库中的包含方法吗?boost库中是这么做的:

#include<boost/random.hpp>

    也就是说,他将random.hpp文件放在文件夹中,编译器找到的是这个文件夹boost的上层目录(注意不是boost目录本身,否则你就要使用#include<random.hpp>了),让后#include里就有boost了,就不会和其他文件夹中的random.hpp冲突了。你应该知道怎么创建自己的math.h了吧?是的,把自己经常使用的源文件放在目录中,将这个目录的父目录添加到编译器的附加目录中即可。

    做法:右键项目名》属性》配置属性》c/c++》常规》附加包含目录,添加自己的库目录的父目录进来。

    第二,头文件与源文件:一般的C++书都告诉我们,将声明放在头文件中(显示有哪些功能);将定义放在源文件中(功能的实现部分);头文件应该包含对应的源文件;使用时只需要包含对应的头文件即可。这都建立在上一步中添加附加目录已经设置的情况下。

第三,让多个项目都使用这个代码库:首先,你应该将自己的代码库放到一个“宝贵的地方”,这个地方可以是百度网盘,金山快盘等网盘在本机上的文件夹中,这样你可以通过网盘实现自动备份。其次,你应该在每个项目的属性中添加你自己的这个库目录地址(见第一,头文件的放置)。这样你可以在一个项目中改动完善你自己的库文件,其他的项目自动使用更改后的版本。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值