seaHi

Stay before every beautiful thoughts.
July 7, 2018

Linux/C 捕捉错误总结

这篇文章主要总结 Linux/C 下常用的捕捉错误信息的函数用法和一些注意事项,包括strerror()、perror()、ferror()0x01 strerror:返回错误原因的描述字符串#include <string.h> char * strerror(int errnum);说明:strerror()依参数 errnum (错误代码)来查询其错误原因的描述字符串, 然...
July 7, 2018

do{}while(0)用法总结

0x01 辅助定义复杂宏,避免引用时出错看下面这个宏:#define DO_SOME_WORK() \ func1(); \ func2();本意是通过调用 DO_SOME_WORK() ,来执行 func1() 和 func2() 两个函数。按照我们习惯的调用方法:if ( a > 0 ) DO_SOME_WORK();实际上展开后是:if ( a > ...
July 7, 2018

C中的static

印象中之前找过好几次关于 C 语言中 static 关键字的资料,但是一直忘,其实也是找到的资料都没说清楚,这里是一个总结和汇总。0x01 static 全局变量一个进程在内存中的数据布局如下(不带说明的是在这个问题中不重要):内存中布局说明栈区 ... 堆栈增长区 ... 堆区 其他段 .bas段未初始化的全局变量.data段已初始化的全局变量.text段进程二进制文件其中 .data 段...
July 7, 2018

assert 用法总结

在C中,assert()实际是一个宏,它的定义在 assert.h 文件中#include "assert.h" void assert( int expression );编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,我们相信在程序中的某个特定位置该表达式值为真。assert帮我们...