逆跑~~窝
技术但不宅
技术但不宅
七 5th
C语言的函数指针可谓家喻户晓,但今天有人问我类成员函数指针如何写,我很随意就给出了一个答案,编译不过,然后又改又不过最后经多方修改终于可以编译过了,并正常使用了。
下面给出的方法是函数指针和被指向函数在同一个类当中:
class CallBack { public: CallBack() { Func=&CallBack::f; } void f() { } void invoke() { //(*Func)();不加this->也编译不过 (this->*Func)(); } //函数指针,蹩脚的定义方式 void(CallBack::*Func)(); }; int main(int argc, const char *argv[]) { CallBack test; //test.*Func();直接用,竟然编译不过,放在invoke函数里用this指针调用就可以 test.invoke(); return 0; }
如果成员的函数指针指向的是其它类的成员函数就只能用模板类了:
class CallBack0 { public: CallBack0(T &t, void(T::*Func)()) : t(t), Func(Func) { } void invoke() { (t.*Func)(); } //函数指针 void(T::*Func)(); T t; }; int main(int argc, const char *argv[]) { CallBack test; //test.*Func();竟然编译不过 test.invoke(); CallBack0 test0(test, &CallBack::f); test0.invoke(); return 0; }
六 29th
一直在用CMake来维护工程,在单元测试阶段如何查看代码的覆盖率?
gcc自带的gcov工具就非常好用,另外它的一个衍生产品lcov则更加犀利。
先说下CMake下如何修改代码,想查看代码覆盖率必须要在编译的时候加上
-fprofile-arcs -ftest-coverage
两个参数,所以在CMakeLists.txt中加上如下代码:
<span style="font-size: medium;">add_executable(hello main.cpp) #编译选项 add_definitions(-fprofile-arcs -ftest-coverage) #链接的时候也要加上-fprofile-arcs选项 target_link_libraries(hello -fprofile-arcs)</span>
编译通过了,可以运行gcov了,不过此处不推荐用gcov,因为用cmake编译之后源文件所对应的.gcno文件位置放的比较凌乱不便于查找,而lcov就好多了它会递归式的查找当前目录。
-d 后面跟源码路径
-c 定位到标准输出
-o 指定覆盖信息输出目录
然后运用lcov自带的genhtml工具生成html格式方便查看,也可以生成其它格式如geninfo, genpng, gendesc:
-o 指定生成目录
最后去result目录查看你的生成结果吧,效果图:
六 16th
最近花了些时间终于把《陈二狗的妖孽人生》看完了,在YY小说横行的年代,这的确是一本不可多得的好说。主角陈二狗,从一个山野村夫,成长为一方巨枭,最后抱得美人归。
书到结尾陈二狗都没有死,但我之所以说陈二狗死了,是因为这样一本好书却着实落下了虎头蛇尾之名,结尾处女主角曹蒹葭莫名奇妙的死了,而且死的过于牵强。还有就是前面挖下的坑好多都没有填上,比如叶燕赵,江浙老佛爷,孙满弓,纳兰经纬,状元王,李夸父连二狗他爹陈龙像也是一笔带过,富贵也是尚未展露手脚,书就这么匆匆忙忙的结束了。估计网上已经有无数网友问候过作者“烽火戏诸侯”全家了,我到没有想着去骂人,毕竟写书也不容易。只是觉得无限的惋惜。
看过的网络小说也有个三五十本了,唯独这本感慨颇深,人物,对话,场景,情节都算得上大家之作,唯有仓促结束的尾巴。这本书让我想起了影响中国游戏颇深的《仙剑奇侠传一》,我算是中国最早的仙剑玩家之一了,记得96年我才11岁,捧着大众软件的攻略,断断续续的打穿了仙剑,林月如和赵灵儿的死使我幼小的心灵遭受了不小的打击,当时没少偷者抹眼泪。但总的感觉仙剑一还是有个完整的结局的,只是不够完美。广大玩家苦等了十年之久,仙二出来了,虽然烂得可以却不失为一种遗憾的填补。烽火一直没有续写《陈二狗》架势,看来只能看看山寨的聊以自慰,真期待陈二狗还能再“活”过来,不知是不是又要如同仙剑一般让读者们苦等十年,陈二狗的续篇才会千呼万唤始出来,怕就怕陈二狗就这么真的死了!
六 15th
久居实验室,身体每况日下,那天吃饭碰上已经退休多年还经常来实验室的蒋老师。蒋老师也是个闲不住的主儿,拉住我在那讲述他每天早上都去打太极拳的事。
之后某天突然有种冲动也想去练练太极,就去找蒋老师询问,他说家属区那正好有个付师傅每天在那教杨世太极。
早上6点起床,本科+研究生念了快6年,这么早起床的次数一只手就数得过来。因为住在学生宿舍,不比家里想几点睡就几点睡,早早的睡觉的确是种奢望。所以这么早起床对我来说确实是一种煎熬,今天是第四天了,虽然晚上早睡还是有点困难,不过早起的感觉然后晨练的感觉确实挺不错的。
打太极一来强身健体,二来我是个急性子,想借此磨练一下性子,从小到大很少有能把一件事情完完整整的坚持下来,希望这次会有所不同。
坚持到底!!
五 30th
花了点时间在实验室的服务器上装好了git,然后又给其装上gitweb可视化页面。发现代码不能高亮,自己弄来玩玩吧!
首先需要工具highlight,因为服务器用的centos5,源里面没有该软件包于是去http://www.andre-simon.de/zip/download.html主页下载源码包自己编译,另外还需要安装boost和lua的依赖,这个源里有。
gitweb用到的highlight版本有点低,所以highlight的运行选项可能有些不同,做个小修改/usr/share/gitweb/gitweb.cgi文件
"highlight -O=xhtml --fragment --syntax=$syntax |"把--xhtml改成-O=xhtml
还需要在/etc/gitweb.conf文件结尾加上
$feature{'highlight'}{'default'} = [1];
搞定!发张效果图,我还改了/usr/share/gitweb/gitweb.cgi的几行小代码
5535行while循环之前加上 print "<pre class=\"hl\">";
5543行while循环之后加上 print "</pre>";
这样就可以把highlight生成css配色放到/usr/share/gitweb/static/gitweb.css结尾产生新的配色了
我用的edit-xcode配色方案,发张效果图: