发布时间:2012-12-19 15:33:18
系统启动时硬件将调用首地址为x位置的子例程, 实现语句如下: //4.7.3, P103(*(void(*)())x)(); 从内向外分析如下:1. void(*)(): 函数指针类型, 参数和返回值都为空2. (void(*)())x: 将x强制转换为函数指针类型. x为地址, 即一个函数存在首地址为x的一段区域内3. (*(void(*)())x): 前面加*, 指针取值, 取x地址开始的一段内容, 即对函数的引用4. (*(void(*)())x)(): 最后加上(), 函数调用, 你懂的利用 typedef 更好理解:typedef void (*pFunction)(void); /......【阅读全文】
发布时间:2012-12-18 08:51:57
一般源程序中的所有程序行都参加编译,但有时希望对其中一部分内容只在满足一定条件下才进行编译.#if、#elif、 #else、#endif、#ifdef、#ifndef/*选择不同的编译范围,产生不同的代码,提供通用性。*//*如对8051在6MHZ与12MHZ下有*/#ifdef cpu==8051#define FREQ 6 /*程序段*/#else#define FREQ 12/*程序段*/#endif/*这样下面的原程序不用做任何修改便可以使用于两种时钟频率的单片机系统*/1:开关作用,条件编程#ifdef A程序段#endif2:避免重复定义,重复包舍#ifndef A#define......【阅读全文】
发布时间:2012-12-18 08:47:31
------------------------- 二维数组的初始化 -------------------------------------------------------二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。例如对数组a[5][3], 如下赋初值的结果是完全相同的。按行分段赋值可写为: int a[5][3] ={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };按行连续赋值可写为: int a[5][3] ={ 80,75,92,61,65,71,59,63,7......【阅读全文】
发布时间:2012-12-18 08:43:18
// ---------------------- extern "C" 的说明 -------------------------------------------------//If building with a C++ compiler, make all of the definitions in this header have a C binding.#ifdef __cplusplusextern "C"{#endif#include "../third_party/lwip-1.3.0/src/include/lwip/opt.h"#ifdef __cplusplus}#e......【阅读全文】