编程技巧
文章平均质量分 89
Illina
这个作者很懒,什么都没留下…
展开
-
C语言长度为0的数组的使用
前面在看Xen的源码时,遇到了一段代码,如下所示:注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?……这篇文章主要针对该问题进行简单的讲解。废话不多说了,现在就开始。长度为的数组在标准c和c++中是不允许的,如果使用长度为的数组,编译时会产生错误,提示数组长度不能为。但在GNUc中,这种用法却是合转载 2013-02-18 15:24:20 · 716 阅读 · 0 评论 -
调试技巧之 gcc/g++ -instrument-functions 参数
调试技巧之 gcc/g++ -instrument-functions 参数参考 GCC 函式追蹤功能 finstrument-functions __attribute__ +用 Graphviz 可视化函数调用 ibm 用 Graphviz 可视化函数调用 gcc/g++使用-finstrument-functions來觀察code每转载 2013-03-07 17:34:03 · 1170 阅读 · 0 评论 -
玩转ptrace
翻译: Magic.D E-mail: adamgic@163.com译者序:在开发Hust Online Judge的过程中,查阅了不少资料,关于调试器技术的资料在网上是很少,即便是UNIX编程巨著《UNIX环境高级编程》翻译: Magic.D E-mail: adamgic@163.com译者序:在开发Hust Online Judge的过程中,查阅了不转载 2013-03-11 13:24:28 · 901 阅读 · 0 评论 -
C语言VOID类型大小
今天和同事在VOID指针类型大小的理解上有些分歧,下面的代码,我理解void类型指针大小不固定,如下使用取出来的指针不确定,同事坚持说没有问题,他一直都是这样用,并且void *指针类型就是char *类型。/* *释放CCB消息 */void CCB_FreeMsg(void *pMsg){ CCB_MSG_S *pstCcbMsg = NULL;原创 2013-02-27 18:02:48 · 2166 阅读 · 0 评论 -
mips的分支延迟槽
分支延迟槽 (Branch delay slot),简单地说就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行,而且位于分支延迟槽中的指令先于分支指令提交 (commit)。看这个代码片段 (MIPS Linux kernel 2.6.17):801ea9d4: 02202021 move a0,s1801ea9d8: 27a50014原创 2013-03-12 10:17:51 · 2800 阅读 · 0 评论 -
使用Automake,Autoconf生成Makefile
Automake,Autoconf生成Makefile在Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及...原创 2018-08-15 11:00:55 · 543 阅读 · 0 评论 -
不利用临时变量,交换两个变量的值
1.借助中间量交换通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int x = 10; int y = 20; int temp = x; x = y; y = temp; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交...转载 2019-01-23 10:49:32 · 523 阅读 · 0 评论 -
记住英文定义,你再也不会混淆C语言的指针数组、数组指针,函数指针、指针函数
经常有小伙伴在求职面试过程中,会被问到C语言的基础问题,最令人抓狂的两个问题可能是:1)请说出指针数组和数组指针的区别; 2)请说出函数指针和指针函数的区别。 虽然小伙伴们有很丰富的开发经验,如果没有做好准备,突然面对这两个问题,也会大脑瞬间一懵。实际上,这些技术在项目开发中会经常使用,就是和名称没对应上。笔者最近仔细研究了下这两类问题,对比英文定义,发现根源还是我们的汉语博大精...原创 2019-07-09 17:16:28 · 714 阅读 · 0 评论