Using C++
posted on 2009-10-29 18:23 codejie 阅读(1174) 评论(10) 编辑 收藏 引用 所属分类: C++ 、随笔而已
嘿嘿,我一直不会写C,从来都木有学过 @_@ 回复 更多评论
我记得当年你给我推荐过一本书,讲的是C++内存的布置。因为要实现OOP的缘故,类的封装开销确实要比C大。我相信你还记得这个吧?对于台式机来说,现在这点内存已经不算啥了。对于嵌入式系统,操作系统内核来说,这点开销还是很多人在乎的……我现在工作的板子,内存才48M呢。整个Linux跑起来还要加载各种驱动模块加上应用程序,JAVA虚拟机……内存很重要的 回复 更多评论
@Liu顺便说一句,我们板子的存储空间只有16M,其中2M可以供应用程序读写。14M包括整个操作系统加上应用程序(ftpd,tftpd,tr69,httpd,dhcpd还有其他各种统计工具监控工具时间同步软件防火墙过滤规则匹配等等等等),web的网页图片和一个简单的XML数据库……不节约用能行么 回复 更多评论
关于第2点不解,看英文描述不是说:在函数体外面声明了动态数组。 C99支持动态数组,但可能不允许作为全局变量定义。 你的解说莫明其妙! 回复 更多评论
@Liu你的run环境比我这边可怜好多。。。我们怎么也是两个扳子,8G内存,4个CPU,24个核,还有一个不知道大小的Shared Memory。。。在我看来,这样的条件下,完成可以使用C++来编写程序了。目前从我得到的情况看,用C的缘由是因为你们A国人,只会用C。。。。我现在在努力把自己的脑袋变成C脑袋。。。 回复 更多评论
@wu嗯,你说的对,这个错误应该是由于动态数组的原因导致的。我不知道C99标准定义了什么,但我用GCC 3.46还是不支持的。想来比较好理解,程序加载时,全局变量在开始就初始了,由于在初始时并没有初始顺序的概念,因此可能存在不知道数组大小的情况,这样,动态数组就无法初始,编译错误也指出了问题所在。不知道我这样理解是否正确,谢谢指点。 回复 更多评论
@codejie你们是局端设备,配置当然不是我们这些用户端设备可以比拟的。不过你们真的可以用C++了,就是估计以前的传统都是C,现在想改也难阿…… 回复 更多评论
所谓动态数组也是通过栈空间实现的,全局变量肯定不成啦。 其实LENGTH已经被定义成常量了,在C++可以用作定义静态数组长度了, 但在C里面好像还是不可以吧?既然报了这个错,我猜她是支持动态数组的, int fun(int n) {char array[n];} // 定义时动态,使用期间不可扩缩 回复 更多评论
@Liu是啊,只有我迎合工作,没有工作迎合我之说啊~ 回复 更多评论
◎wu是的,我知道C++这样是OK的。。。 回复 更多评论