traditional error handling: return value or set global error variable. signal() & raise() setjmp() & longjmp() C++ standard states: branching into a scope with goto, or branching out of a scope with longjmp() where an object on the stack has a destructor, constitutes undefined behavior. you can use any type when you throw(including built-in types). [...]
上个周六,网络中心的同学们头一次聚一起搓饭,主题是欢送小N。吃饭嘛,免不了喝酒。男生中此前盛传zz很能喝酒,其实我也是散布消息的小喇叭,只是酒席上zz没有把矛头指向我,而是对准了她实验室的cl,说他散布谣言,其实她是一杯就倒,呵呵。女生呐,就是喜欢装。其实她真的能喝的,而且cl说她能喝白酒的时候我还小诧异了一下,我还一直以为她只喝啤酒呢。也许是“谣言”散布太厉害了,有损她清纯玉女的形象,这一次她喝得不多,但也绝不只1杯那么点。女生里面我就见j姐和她喝酒了,她大概有1瓶吧,应该远不及她的量,^;^我嘛,大概喝了3瓶,也许是饭桌上叫嚣得太多,太活跃了,酒精分解得比较快,没什么感觉,很清醒,也不涨。给科长敬酒的时候,我敬一杯,他才喝了一口,我不爽了,他居然说是我没给他倒酒,…,我说不过他,也就啥都不说,再给他满上,然后我又是一杯。他再不喝,面子上就挂不住了,呵呵,不过这已经让我不爽了,我也是个很贱的人,拼酒嘛,要的就是气势,科长耍赖他还气势汹汹,我就想跟他死磕。不过后来也没拼成,科长有些耍赖,去洗手间就不回来了。后来拉我出去,把女友当挡箭牌,说还得照顾女友,不能喝太醉,wokao,居然有如此重感情的男人,我感动了。小N嘛,虽然开始的时候按学号排着去敬他,后来也就乱了套了,几个人一起,或者敬酒他随意,大家也都很厚道,没有把他灌醉的意思。其实不是厚道,而是大家放不开,不想大学四年的朋友混的那么熟。要是这是大学毕业的时候搓饭,小N是肯定得躺着回去的。整个聚餐始终在亲切友好的气氛中进行,当然虽然身处和谐社会,也总有不和谐的因素。lc和hzy是我们班唯一的一对,大家必然也要恭喜一番,然后都呼吁“亲一个”,结果lc“发飙”了,呵呵,其实也就是开开玩笑而已,大家一起帮他加深感情嘛。那天是7月7日,国耻不会忘记的。 Powered by ScribeFire.
万事开头难,第一次成功了,第二次也就相对容易了。昨天的2.6.21.5里面的无线网卡驱动没有搞好,少了些模块吧,今天下了2.6.21.6然后再编译了一次,在sudo mkinitramfs -o /boot/initrd.img-2.6.21.6 2.6.21.6的时候提示/lib/firmware/2.6.21.6/不存在。正好在搜关于无线网卡的驱动问题的时候有人提到了,无线网卡需要一个firmware,而这个firmware可以从原来可用的/lib/firmware/2.6.20-16-generic/下面直接复制,根据开机启动的错误提示,我缺少的是ipw2100-1.3.fw,我就把ipw2100开头的文件都复制到了/lib/firmware/2.6.21.6/,再重新生成initrd.img,重启之后,无线网卡就驱动了。开机启动还会有些错误提示,暂时没有发现系统受到了什么影响,就先不管了。 Powered by ScribeFire.
昨天和姜维聊了聊,对于编译内核了解又多了一点点,然后决定再try一次。过程如下: make mrproper清除以前的编译记录 make gconfig超级繁琐的内核配置,第一次搞的时候用的menuconfig,这次用gconfig,易用性又好了一些,不过gconfig需要安装glade-gnome,而libglade2-dev我也装了,不过不知道是否必须。配置的时候可以保存或者读取配置,我想在编译不同版本的内核的时候,配置文件应该有一定的通用性吧,不然每次都选那么多东西,挺麻烦的。 make20多分钟的漫长等待,可怜的笔记本阿,好烫,我一直在给他扇风,下次配个电扇给它。由于是第一次编译,我以为到这里就结束了,然后我自己把./system.map和./arch/i386/boot/bzImage复制到了/boot/,然后在/boot/grub/menu.lst中加入相应的启动项,不过有些疑惑,initrd后面写什么?我看了看bzImage所在的目录,没发现有什么img文件阿,抱着一丝侥幸的心里,我重启了。结果是很显然的,不行,出错提示忘了,反正只能强行关机。(出错了之后,就开始瞎琢磨,大致知道做了些什么,但是顺序忘了,不知道成功的用上新的内核是否于这些命令的执行顺序有关,我现在只能按照我的理解,把自己认为正确的一种顺序写出来) sudo make modules_install install再make之后应该执行这一步,会自动把内核文件和system.map复制到/boot/目录。如果此刻重启,会提示找不到/lib/modules/2.6.21.5/modules.dep,原因应该就是没有正确的initrd.img sudo mkinitramfs -o /boot/initrd.img-2.6.21.5 2.6.21.5生成对应于2.6.21.5内核版本的initrd.img,再这一步之前我做过”sudo depmod -a”,depmod就是用于生成modules.dep的,但是我执行的时候没有加版本号,所以我估计这个命令并不是必须的,我猜在modules_install的时候,modules.dep应该已经生成了。在menu.lst里面指定好正确的initrd.img,重启,ok 自己编译的内核是1.2MB,原来的2.6.20.16的是1.7MB,小了一些。成功了一次,就让我有了继续尝试的动力,下次把config的东西再仔细选选。编译的时候driver是最耗时间的,而且driver里面的选项也超级多,高手们应该都知道自己机器需要什么不需要什么,而我为了保证编译出来的能用,就没有做太多的改动,更多的配置,有待于进一步的尝试。 Powered by ScribeFire.
Chapter 16: Introduction to Templates 关于把类实现的源代码发在头文件里面可能导致的版权问题讨论(P700) you will almost always put the entire template declaration and definition in the header file, for ease of use. C++ is a strongly-typed language, but templates provide a kind of weak typing mechanism for C++. Template arguments are not restricted to class types, you can also use built-in types. [...]