利用
#ifndef region_12345
#endif // region_12345
也可以支持自定义折叠。
不过这种region都是对代码的污染,按代码的自然段落折叠就足够了。
re: 使用boost库需要一定的素质 金庆 2009-09-08 10:10
想用就用,不用也没关系。但是不要去做重复发明轮子的事情。有现成的库是件幸福的事,C++比C幸福。
正负无穷大的浮点数应该是可以参与运算与判断的,不会有危险。
请给大家展示一下因为无穷大而出错的示例代码吧。
re: 函数参数的理想个数 金庆 2009-08-05 18:01
@欲三更
还可以用参数对象。多个参数组织成一个结构体。
re: 函数参数的理想个数 金庆 2009-08-05 09:44
大家受C语言的影响比较大.
确实在Windows API和C库函数中存在参数一大堆的情况.
在面向对象语言中, 参数可以转化为成员变量和参数对象, 大大减少参数的个数.
C++库比C库更好用, 就是因为调用时不必列出一大堆的参数.
以transform(const BYTE* inBytes, int inLen, BYTE* outBytes, int& outLen)为例,
可以转换成对象的方式:
outBuf = transform(inBuf)
或者 buf.transform()
re: VS2005编译libevent 金庆 2009-07-30 09:02
@thinke365
select.c应该可以,epoll.c, kqueue.c在Windows上用不到,应该是不可编译的,看看工程文件中是否包含了这两个文件?
re: 网游反外挂图形验证机制的设计 金庆 2009-07-27 18:45
@oday
游戏好玩性是策划们考虑的问题。程序只需读取策划设定的验证频度就行了。
取消一次验证并不能绕过验证,因为下次操作会100%要求验证。
re: 网游反外挂图形验证机制的设计 金庆 2009-07-24 09:34
@abettor
传统的验证码是与功能捆绑的。如提交时必须输入验证码。
上述设计是插入式的,可以插入网游的任意功能中,还可以按一定概率弹验证码对话框。验证码与功能无关。
re: 用脚本实现副本 金庆 2009-07-20 09:52
@GreeEight
并不指望策划写复杂的脚本。策划的脚本应该是配置型的脚本,最高境界是用WEB界面填写一些表格。使用代码脚本也是一些配置型的语言,如Lua. 但是在C++代码之上提供一个脚本层是有必要的,C++代码为核心功能,脚本提供扩展功能。策划的数据控制的是脚本,而不应该直接调用核心功能。
re: 用脚本实现副本 金庆 2009-07-17 09:17
@Kevin Lynx
对,就是让策划可以用脚本定义副本。
@董波
工作了同样要抽时间学习啊。好消息是,工作中的学习不是应付考试的学习。
我是boost翻译小组成员,翻译了2个库:python和signals. 现在还在翻译1.39版中新增的signals2库。
re: 内部推荐的职位 金庆 2009-06-08 09:37
@向往
说明已经招好人了。
使用方便性上应该是boost::algorithm::split第1吧?
@空明流转
谢谢。
根据你的提示,我再深入看了看spirit的帮助,其中例子calc_plain.cpp用的就是grammar. 只要把这个例子中的加减乘除及压栈动作实现就是一个表达式求值。
@空明流转
试了下,还是不对。
space_p前面加个*是什么意思?
expression以eol_p结尾肯定是不对的,因为group定义为(exp).
打开上面的DEBUG宏也没什么帮助。
re: C调用lua脚本的效率测试 金庆 2009-02-17 19:11
@LOGOS
有理。有空试试。
@Dancefire
不是utf-8, 所以才会乱码。看来未来的趋势是用utf-8来写代码了。
re: VS2005编译libevent 金庆 2009-02-12 09:36
@路过
可能是这样吧。大家可以这样试试。
re: VS2005编译libevent 金庆 2008-12-26 08:54
@gashero
是不是也是windows下的select()问题?
查找出错原因应该不难吧?
re: VC6正在被抛弃 金庆 2008-12-05 09:35
CodeBlocks简单小巧,是C++学习和小工程开发的利器。
VC6是我用得最长时间的工具。
现在的VC2005功能上增强了许多。
技术的更新换代是正常的,该弃就弃。
re: 让人无语的boost 金庆 2008-10-15 12:42
用到了才知道boost好。我也在学着应用boost.
@sPhinX
有道理。
gcc 怎么没这个警告呢?
但在构造函数中不用this怎么初始化B呢?
我发现一个问题:
B * pB(new B(&a));
肯定不行,因为&a是const A *,不能转成A*。
但是const A a的构造函数中却可以用this构造B。
为什么const A a构造时,this 指针不是 const A*,而是 A* 呢?
@raof01
更准确的说法可能是:C++中const默认为内部链接的。
我本来不甚了了,现在查了C++标准终于清楚了。
C++ 2003 标准下载自:
http://d.download.csdn.net/down/167339/i2005reg原文如下:
Annex C
3.5
Change: A name of file scope that is explicitly declared const, and not explicitly declared extern, has internal linkage, while in C it would have external linkage
Rationale: Because const objects can be used as compile-time values in C + +, this feature urges programmers to provide explicit initializer values for each const. This feature allows the user to put const objects in header files that are included in many compilation units.
@raof01
看了你的文章,很好,学到了 bitwise constant.
const char STR_TEST[] = "Hello world!";
确实多用了空间, 看来还是用 const char * const 好,这样只需复制指针。
const 变量默认是 static,应该是C++标准说的吧。不然我的代码就会编译出错。
@TheAnswer
char * const STR_TEST = "Hello world!";
STR_TEST[0] = 'X';
会通过编译,所以不能去掉前面的const.
@feinix
错误信息呢?还要给出原例子的地址,看看你改了什么?
re: VS2005编译libevent 金庆 2008-07-09 11:26
@我要去桂林
我只编译了libevent和event_test两个项目,还有两个test项目要改的较多,没必要一定通过。
你的这个错误说明libevent已经通过,恭喜。time_test确实是通不过的。
re: Boost.Singals 教程 金庆 2008-07-01 15:33
@FongLuo
可能没下完。Google小组有时候下载一半就会断掉。
我试了6.25的7z包,可以用我的7z_4.42解压。
@赖勇浩
C++一直是我的主兵器。“精通一个,学习另一个,关注下一个”,我一直在打磨我的C++之剑,努力精通C++技艺。
re: 选特化还是重载 金庆 2008-06-12 11:36
将f(int*)特化定义到f(T*)模板之后,结果就不同了,f(p)调用的变成了f(*int)!
"尘埃"和"斯卡"两位很有研究精神,让大家有这个机会深入剖析与思考。
结果变了,结论还是一样的,此时特化针对的主模板变成了f(T*)。
@FongLuo
在ARM上开发,应该与VC6无关。至于Python与Lua的选择,我期待你及你公司的最终意见,好让大家参考。
@FongLuo
当然是Python了。
Perl不必考虑,代码可读性差,看不懂。
Lua在游戏内嵌脚本领域应用较多,但通用性远不及Python。
Python一方面使用简单,另一方面是因为它流行。
re: 模板参数名命名惯例 金庆 2008-04-22 09:52
@Kevin Lynx
我的观点是,开源需要亮出自己的名号.
"转载请注明来源于金庆的专栏"是为了方便读者找到原文出处.
re: 模板参数名命名惯例 金庆 2008-04-22 09:43
@Wang Feng
取消宏定义是一种方法,这样该宏只能用于当前文件。
re: 模板参数名命名惯例 金庆 2008-04-22 09:38
@踏雪赤兔
SGI STL与StlPort的代码是很相似的,如上述map的定义几乎一样,只是stlport多了些对平台的判断,移植性好点。应该不算“严重地损害了代码可读性”。
re: 写在最前面 金庆 2008-04-22 09:24
re: XRCed生成的代码分析 金庆 2008-04-03 09:25
@haskell
就是要费点时间。学习过程是愉快的。
re: XRCed生成的代码分析 金庆 2008-03-31 10:01
@haskell
DoDataExchange()等效的功能在wxWidgets中应该是“wxValidator”吧。
A validator is an object that can be plugged into a control (such as a wxTextCtrl), and mediates between C++ data and the control, transferring the data in either direction and validating it.
我还没用过,有机会可以试试。
re: XRCed生成的代码分析 金庆 2008-03-31 09:25
@haskell
当然可以。如下,设上下放大比例为1:0,即下面的按钮不进行上下伸缩,并且设置wxEXPAND,即左右扩展。
wxBoxSizer* sizer_1 = new wxBoxSizer(wxVERTICAL);
sizer_1->Add(button_1, 1, wxEXPAND, 0);
sizer_1->Add(button_2, 0, wxEXPAND, 0);
SetSizer(sizer_1);
上面的代码是wxGlade生成的。
re: 把头文件全部导出的脚本 金庆 2008-02-20 09:36
还是统一开发环境为上。
re: 滥用ini配置文件造成崩溃 金庆 2008-01-31 10:17
@agaric
我也怀疑是文件系统有问题,不然断电正好断在打开文件这个点上概率几乎为0,虽然还是有可能。搞个版本号加有效标记确实太累。默认值是有的,但实际值与默认值不同。(不然要配置干嘛?)
re: 用C++实现插件体系结构 金庆 2008-01-28 10:09
“如果把GPL组件封装在插件中,你就不必发布插件的源码”?
原文是:encapsulate this GPL component in a plugin, you're only required to release the plugin's source
不过DLL插件是GPL的,好像整个程序都应该是GPL的吧?原文这么说也不对吧?
re: 对研发部的思考 金庆 2008-01-23 10:16
不合适的人就不要强留了。只是有点伤感。
re: 对临时变量的引用 金庆 2008-01-11 10:07
@<a href=
http://minidx.com>minidxer</a>minidxer想要引发我们对临时变量的思考。(或者是搅乱我们原来的认识?)
上述3个结论是正确的,只是第一个表述成这样更清晰:
const量与所赋值的生命周期无关
或者
const量与其他变量的生命周期无关
回答问题:
1. 无法操作临时变量
2. 临时变量会立即释放
3. 临时对量被引用后,不再临时
(再深入讨论可能会吓跑大批想学或正在学C++的朋友!)