在定义可变參数的函数之前,先来理解一下函数參数的传递原理:1、函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈。2、參数的内存存放格式:參数的内存地址存放在内存的堆栈段中,在运行函数的时候,从最后一个(最右边)參数開始入栈。因此栈底高地址,栈顶低地址,举个样例说明一下:voi...
分类:
编程语言 时间:
2015-02-28 20:08:41
阅读次数:
182
求最大值、求余数: 1 #include 2 3 #define SURPLUS(A,B) ((A)%(B)) 4 #define max(A,B) (A>B ? A:B) 5 6 main() 7 { 8 printf("%d\n",max(2,3)); 9 //getch...
分类:
其他好文 时间:
2015-02-28 14:28:28
阅读次数:
158
qt中如何实现定义一个宏,在整个工程中都可以实现呢?下面我来写一个亲测的例子:
pro中添加如下宏定义代码:
DEFINES += HELLO=\\\"$$PWD/\\\"
DEFINES += SUCCESS=\\\"string\\\"
在.cpp中测试代码如下:
#ifdef HELLO
qDebug()<<"HELLO="<<HELLO;
#else
q...
分类:
其他好文 时间:
2015-02-28 13:05:32
阅读次数:
119
带参宏定义和inline修饰的内联函数都是在编译时,用函数体替换掉宏调用或函数调用。这样用的好处是减少调用函数所花费的时间。例如:算法导论在讲到堆排序时说的,好的堆排序实现一般是把Left(i),Right(i),Parent(i)的实现通过宏定义或内联函数来实现,这就是因为当我们对一组数据使用堆排...
分类:
其他好文 时间:
2015-02-25 12:53:40
阅读次数:
114
经常在一些开源的程序中看到一些宏定义,却看不到这些宏定义是在哪些地方定义的,其实有些宏定义是交叉编译工具GCC预定义好的,比如:__GNUC__,__ELF__等等,怎么看到这些宏定义呢...
分类:
系统相关 时间:
2015-02-20 22:02:32
阅读次数:
283
一、算法
高斯模糊算法 详见:高斯模糊,基本思想就是利用高斯函数,将一个坐标点的所有邻域的加权平均值设置为这些点的颜色值。
中值滤波算法就更简单了:将一个坐标点的所有邻域的平均值设置为这些点的像素值。
二、算法的代码实现
高斯函数:
使用宏定义来替换:
#define PI 3.1415926
//高斯模糊函数
#define GAUSS_FUN(x, y) (exp(-(x*x)...
分类:
编程语言 时间:
2015-02-14 17:34:16
阅读次数:
270
一个程序需要经过预编译、编译、汇编、链接成为可执行文件的过程。
预编译过程:
工具命令
gcc -E hello.c -o hello.i
cpp hello.c > hello.i
过程:
1.将宏定义展开,去除#define
2.处理预编译命令。
3.展开#include文件。
4.删除// /**/行
5.添加行号和文件名标识。
编译:将C语言编译成汇编语...
分类:
其他好文 时间:
2015-02-13 14:50:52
阅读次数:
143
一、什么是指针1.指针是存放另一个变量内存地址的变量 指针型变量的长度为4个字节,32位2.宏定义NULL,表示0 良好的编程习惯:暂时不使用指针时,将其值设为NULL3.指针定义后,若未被初始化,则其值为0xCCCCCCCC(Visual Studio中) 若访问此地址,则程序崩溃4.指针作用:对...
分类:
编程语言 时间:
2015-02-10 22:55:34
阅读次数:
197
一、前言rt-thread采用软件定时器线程模式或硬件定时器中断模式来实现系统定时器管理。而rt-thread操作系统在默认情况下是采用的硬件定时器中断模式的方式,用户可以通过宏定义RT_USING_TIMER_SOFT来修改定时器管理模式。硬件定时器中断模式是利用MCU芯片本身提供的硬件定时器功能...
分类:
其他好文 时间:
2015-02-09 22:57:33
阅读次数:
4389