摘要: C语言中##称为连接符,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。 要注意下面的用法: 1、 [cpp] #include #define debug(format, args...) fprintf(stderr, format, args) void main(void){ debug("Test \n"); return; } 有的说这种情况下字符串后面会多一个逗号,但是我用gcc编译不通过; 2、 [cpp] #include #define debug(format, args...) fprintf(stde... 阅读全文
posted @ 2013-09-23 14:20 来自你520的末班车 阅读(507) 评论(0) 推荐(1) 编辑
摘要: 学习C语言,如果你不能用指针编写有效、正确和灵活的程序,可以认为你没有学好C语言。指针、地址、数组及其相互关系是C语言中最有特色的部分。规范地使用指针,可以使程序达到简单明了,因此,我们不但要学会如何正确地使用指针,而且要学会在各种情况下正确地使用指针变量。C语言指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子:例一:(1)int*ptr;(2)char*ptr;(3)int**ptr;(4)i 阅读全文
posted @ 2013-09-23 11:15 来自你520的末班车 阅读(400) 评论(0) 推荐(1) 编辑
摘要: 编写代码的过程中,经常会输出一些调试信息到屏幕上,一般会调用printf这类的函数。 但是当调试解决之后,我们需要手工将这些地方删除或者注释掉。 再这次的项目中就用到类似问题,为了调试程序,再一些地方输出了很多的信息,随着项目的调试,输出的信息越来越多。于是就面临着,如何处理这些输出信息的语句。 简单删掉,不仅有一定的工作量,而且也不能保证之后就不出现问题,出现问题后这些信息还是有用的。 不去掉,带着调试信息就上线,这是明显不允许的。 于是就想到了一个可行的办法。如下:voidmyprintf(char*fmt, ...) { } #ifdefDEBUG #defineprintf(fmt, 阅读全文
posted @ 2013-09-23 11:13 来自你520的末班车 阅读(767) 评论(0) 推荐(2) 编辑