免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: gtkmm
打印 上一主题 下一主题

[C++] 弱弱的发帖寻求开源爱好者 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-12-07 12:23 |只看该作者
于是我的异常代码都是用用宏写的_throw, 而不是throw, 禁了这个宏,就能在出错是返回-1了。
想比于cout,cin我更倾向于printf,scanf,不过printf和scanf的实现我觉得有问题,至少bsd的代码上速度问题。
再说封装,c99不是把一个“封装”过后的complex引入了么? 还重载了+-*/,大家也没有说什么。
我确实想封装并且实现很多东西,不过我也说了,这些东西是弱耦合的,可以很容易拆开,想用哪块就用哪块,不用管整个库。

apr我没用过(只是内存那块用过), boost我觉得很多库臃肿而且低效,而且不区分什么应该是标准库,什么不应该是,结果太大,而且想在头文件里实现一切,并大量用模板,直接导致编译速度差。

就算是一个新的而且小的boost吧,不过是我认为完美的。

论坛徽章:
0
12 [报告]
发表于 2009-12-07 12:31 |只看该作者

回复 #1 gtkmm 的帖子

这个世界己经挺好了,
不过某些天,某人觉得某方面不好,于是出现了某库。
又是某些天,某人觉得某方面不好,而且是语言上的问题,于是出现了一个新的语言,之后把现有其它语言上的库一个一个的移植。

(比如python的库,多到BT的程度,无所不能了,成为神了)

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
13 [报告]
发表于 2009-12-07 14:44 |只看该作者
原帖由 gtkmm 于 2009-12-7 01:37 发表
小弟不才,一直想做一个C++库,拥有基础数据结构,文件,网络,线程进程,GUI等东东,
暂时没有商业用途想法,正考虑GPL或是LGPL。

基础数据结构基本从stl或是其它free软件(比如glibc)里弄来一些就行了,或 ...



您这个 ID 和一个知名程序库同名,容易引起符号冲突,建议你加个名字空间区分,例如:my::gtkmm.  

C++ 的库已经比较多了,也不时尚了,要不你开发个 ajax 库吧,这个最近比较流行。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
14 [报告]
发表于 2009-12-07 14:55 |只看该作者

回复 #11 gtkmm 的帖子

不能用宏去控制throw 或者返回错误代码。 因为客户对throw 和错误代码的反应是大不相同的。
除非想让客户代码写成这样:
#ifdef THROW
error e = f();
if ( !e ) {
        handle e
}

#else
try {
        f();
} catch ( ex e ) {
        handle e
}
#endif



我也想做成这样:这些东西是弱耦合的,可以很容易拆开,想用哪块就用哪块,不用管整个库
看来我想的东西还是太非主流了

论坛徽章:
0
15 [报告]
发表于 2009-12-07 15:02 |只看该作者
只是我用gtkmm当名字,并不是我的库。
C++库虽然很多,但我还是没有找到我想要的那种,于是想实现。
我觉得C++是艺术品,我用这个艺术品去创作自己的艺术,我现在不考虑ajax。



我非常讨厌用#ifdef THROW,  
所以我干脆提供了一个特有的头文件,引入这个头文件就有异常,不然就没有。
而我到底define了什么,那在库的外面,是不需要关心的。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
16 [报告]
发表于 2009-12-07 15:05 |只看该作者

回复 #15 gtkmm 的帖子

#define 了什么,库外面不用关心。
但到底是用throw 还是error code, 客户代码不关心不行。

论坛徽章:
0
17 [报告]
发表于 2009-12-07 15:08 |只看该作者
客户自己是知道,他是怎么引入这个库的,还有这个库是怎么编译的。

就像fftw默认是double,想用float就要编出一个fftwf来。
所以,我的库也要自己编译出一个带异常的so或是一个不带异常的,看怎么编译。
之后看想链接哪一个so,来决定里面有没有异常。

论坛徽章:
0
18 [报告]
发表于 2009-12-07 15:13 |只看该作者

回复 #9 hellioncu 的帖子

顶这句话,这点应该也是unix哲学一直强调的.

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
19 [报告]
发表于 2009-12-07 15:16 |只看该作者

回复 #17 gtkmm 的帖子

哦, 这样?

throw.cpp

#include "enable_throw.h"
#include "lib.h"

void f1()
{
        lib_function();
}


non_throw.cpp
#include "lib.h"

void f2()
{
        if ( error e = lib_function() , !e ) { ... }
}

可行。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
20 [报告]
发表于 2009-12-07 15:41 |只看该作者
建议楼主还是做一个能运行的能完成特定功能的项目,做好了会比你现在做一个“无所不包”开发库有成就感。

如果还是想做一个开发库,建议做一个着重于某个特定领域的,象Openssl那样,否则我看是没人会愿意使用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP