上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页

2013年8月6日

函数返回值

摘要: 引述自Documents/zh_CN/CodingStyle 函数可以返回很多种不同类型的值,最常见的一种是表明函数执行成功或者失败的值。这样的一个值可以表示为一个错误代码整数(-Exx = 失败, 0 = 成功)或者一个“成功”布尔值(0 = 失败,非0 = 成功)。混合使用这两种表达式方式是难于发现的bug的来源。为了避免产生这种bug,请遵循下面的惯例: 如果函数的名字是一个动作或者强制性的命令,那么这个函数应该返回错误代码整数。如果是一个判断,那么函数应该返回一个“成功”布尔值。 返回值是实际计算结果而不是计算是否成功的标志的函数不受此惯例的限制。一般的,他们通过返回一些正常值范... 阅读全文

posted @ 2013-08-06 19:03 阿加 阅读(194) 评论(0) 推荐(0) 编辑

BUILD_BUG_ON

摘要: BUILD_BUG_ON()在编译时调用,可以提前发现错误,这里利用了一些不常用的特性,当数组个数元素为负时会发生编译器错误,对于位域宽度而言,其为负数时也会发生编译器错误。1 #define BUILD_BUG_ON_ZERO(e) (sizeof(struct{int : -!!(e);}))2 #define BUILD_BUG_ON_NULL(e) ((void*)sizeof(struct{int : -!!(e);}))3 4 #define BUILD_BUG_ON(condition) ((void)BUILD_BUG_ON_ZERO(condition))5 6 #de... 阅读全文

posted @ 2013-08-06 18:51 阿加 阅读(1426) 评论(0) 推荐(0) 编辑

2013年8月2日

ANSI 转 UTF-8

摘要: ANSI和UTF-8格式都不太了解,各自好像都有好几种,下载了一个库,文件基本都是ANSI格式,linux显示乱码,原来都是在虚拟机一个个的“另存为“完成的,这次文件有点多,因此需要用命令完成。以下方法不通用,遇到特殊情况再行处理方法1:1 iconv -f GBK -t UTF-8 inputfilename -o outputfilename2 #-f后是源文件编码3 #-t后是转换成的文件编码格式4 5 #icov -l 可以查看所有的编码格式,我尝试使用了 -f ANSI没有用6 #之所以使用 -f GBK, 完全是因为在用方法2来解决文件格式转化时,尝试了GBK参数,7 #因此使用了 阅读全文

posted @ 2013-08-02 13:22 阿加 阅读(714) 评论(0) 推荐(0) 编辑

write solid code 零散(原文)

摘要: 整理下目录,看了这个文件,幸好未删除。以下是《write solid code》中的原文摘录。1、How could I have prevented this bug?2、How could I have automatically detected this bug?3、If a programmer believes that a bug can simply "go away", or that fixing bugs "later" won't be harmful to the product, bugs will persist.4 阅读全文

posted @ 2013-08-02 08:22 阿加 阅读(266) 评论(0) 推荐(0) 编辑

2013年8月1日

关于非本地跳转

摘要: csapp p_795如下所述的问题经过讨论并未被解决……以下示例中未以ARM为例,因为我查到的ARM的ABI规范中,寄存器均由callee保存,或者callee与caller均不保存,因此很容易可以解决下列问题。以下以i386为例.关于非本地跳转存在的疑问(以setjmp、longjmp为例)函数调用之间需遵循ABI规范 有些寄存器是由caller保存(以备被callee使用而修改原来的值),当从callee返回后恢复这些寄存器; 有些寄存器是由callee保存(以备被callee使用而修改原来的值),当即将从callee返回时恢复这些寄存器; 某些寄存器可以随便使用,即不需要caller保 阅读全文

posted @ 2013-08-01 12:16 阿加 阅读(451) 评论(0) 推荐(0) 编辑

全局变量的多重定义

摘要: 此处请参考下:http://coolshell.cn/articles/10115.html C语言全局变量那些事儿csapp :p_700以上记录的解决方法有个缺点,当我们分别编译而后再链接时,只会报warning,因此当我们定义全局变量时尽量使其成为强符号,例如对于上例:double x = 0; 阅读全文

posted @ 2013-08-01 12:13 阿加 阅读(720) 评论(0) 推荐(0) 编辑

2013年7月21日

按列拼接文件

摘要: 同学问下如何按列拼接文件,脚本中写了三种方法……#! /bin/bash len1=`wc -l $1 | cut -d ' ' -f1`len2=`wc -l $2 | cut -d ' ' -f1`file1=$1file2=$2if [ ${len1} -le ${len2} ]then file1=$2 file2=$1fi#paste ${file1} ${file2} ... 阅读全文

posted @ 2013-07-21 16:50 阿加 阅读(204) 评论(0) 推荐(0) 编辑

2013年7月19日

fstrict-aliasing

摘要: 承如“optimization blocks”文中所述,由于相同的指针可能指向相关的内存区,因此编译器将不做过分的优化……特意搜了下编译器在不同的优化等级下都有哪些默认优化,因此有了此记录(比较长,尽管只讲述了fstrict-aliasing ……)下述内容引述自:http://dbp-consulting.com/tutorials/StrictAliasing.html http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-aliasing.html http://stackoverflow.co 阅读全文

posted @ 2013-07-19 22:51 阿加 阅读(4879) 评论(1) 推荐(0) 编辑

optimization blocks (csapp chapter 5.1)

摘要: p_511编译器在没有指示下,会做‘ safe optimization',因此有些优化在没有参数的指示下是不会对代码做优化的,故在程序中应该避免某一类代码,因为它们妨碍了编译器做优化。optimization blocks: aspects of programs that can severely limit the opportunities for a compiler to generate optimized code;两类optimization blocks:1、memory aliasing pointers may generate the same memory 阅读全文

posted @ 2013-07-19 22:25 阿加 阅读(310) 评论(0) 推荐(0) 编辑

2013年7月14日

桥接模式(bridge pattern)-------结构型模式

摘要: 桥接模式是一种对象结构型模式,其将抽象部分和它的实现部分分离,使它们都可以独立的变化,又称为柄体(Handle and Body)模式或接口(Interface)模式。优点:1、分离抽象接口及其实现部分。桥接模式使用“对象间的关联关系”解耦了抽象类和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度变化(即抽象和实现不再在同一个继承层次中结构中,而是“子类化”它们,使它们各自都具有自己的子类,以便任意组合子类,从而获得多维度组合对象)。2、在很多情况下,桥接模式可以取代多层继承方案。多层继承方案违背了单一职责原则,复用性较差,且类的个数非常多,桥接模式是比多层继承方案更好的解决方法,它极 阅读全文

posted @ 2013-07-14 14:14 阿加 阅读(283) 评论(0) 推荐(0) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页

导航