摘要: 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。#define BIT3 (0x01<<3)Static int a;Void set_bit3(void){ a|=BIT3;}Void clear_bit3(void){ a &= ~BIT3;} 阅读全文
posted @ 2013-10-08 21:30 阳光VS心情 阅读(2700) 评论(2) 推荐(0) 编辑
摘要: 一个定义为volatile的变量就是说它可能会意想不到的改变(改变它的情况有很多,例如操作系统,硬件,线程),这样,编译器就不会去假设这个值,也就是说,当优化器读到这个值时就会小心翼翼的去重新读取这个变量的值,而不是使用保存在寄存器中的备份。(当使用到用类型修饰符声明的变量时,系统总是从它所在的内存读取,既使系统刚从这里读取过)Volatile修饰符告诉编译程序不要对该变量所参与的操作进行优化。例子1) 并行设备的硬件寄存器。存储器映射的硬件寄存器通常加volatile例如状态寄存器。以为设备寄存器会在你的程序不知道或者不介入的时候发生改变,那是因为设备寄存器可以被外设硬件修改。相反,变量中的 阅读全文
posted @ 2013-10-08 21:25 阳光VS心情 阅读(3452) 评论(0) 推荐(0) 编辑
摘要: 关键字const有什么含意?1)使用Const关键字的地方是为了说明这个参数为常量,是不应该被修改的。2)合理使用const 可以是编译器自然的保护那些不希望被修改的参数,防止被无意的代码修改。3)通过给优化器一些有用的信息,使用关键字const也许是代码更加紧凑。下面的声明都是什么意思?1)constinta;2)intconsta;3)constint*a;4)int*consta;5)intconst*aconst;1) a是一个常整数;2) a是一个常整数;3) a是一个指向常整形的指针4) a是一个指向整型的常指针;5) a是一个指向常整型的常指针; 阅读全文
posted @ 2013-10-08 21:01 阳光VS心情 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 用变量a给出下面的定义a)一个整型数(Aninteger)a) int a;b)一个指向整型数的指针(Apointertoaninteger)b) int *a;c)一个指向指针的的指针,它指向的指针是指向一个整型数(Apointertoapointertoanintege)rc) int **a;d)一个有10个整型数的数组(Anarrayof10integers)d) int a[10];e)一个有10个指针的数组,该指针是指向一个整型数的。(Anarrayof10pointerstointegers)e) int *a[10];f)一个指向有10个整型数数组的指针(Apointertoa 阅读全文
posted @ 2013-10-08 20:57 阳光VS心情 阅读(176) 评论(0) 推荐(0) 编辑
摘要: int swap (int *a, int *b){ *a = (*a) +(*b); *b = (*a) - (*b); *a = (*a) - (*b);}或者int swap (int *a, int *b){ *a = (*a) ^(*b); *b = (*a) ^(*b); *a = (*a) ^(*b);} 阅读全文
posted @ 2013-10-08 20:39 阳光VS心情 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 路由表里会告诉你下一跳是哪里,也可以知道出口端口,其实网关就是一条默认路由,你想修改的话就用route命令去修改,route add 或者 route del 阅读全文
posted @ 2013-10-08 19:43 阳光VS心情 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 *atoi() 3 * 4 * To convert a string to integer 5 * 6 */ 7 #include 8 #include 9 #define IS_DIGIT(_arg_) ({char _ch_ = _arg_ ;(_ch_ >= '0'&&_ch_ 0 ? integer : -integer;46 47 } 阅读全文
posted @ 2013-10-08 19:40 阳光VS心情 阅读(636) 评论(0) 推荐(0) 编辑
摘要: #include #define IS_UPPER(_ch_) (_ch_ >= 'A' && _ch_ = 'a' && _ch_ = '0' && _ch_ counter ? max : counter; counter = 0; } flag = F_UPPER; } else if (IS_LOWER(*p)) { if ( F_LOWER != flag ) { max = max > ... 阅读全文
posted @ 2013-10-08 19:01 阳光VS心情 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要 阅读全文
posted @ 2013-10-08 18:58 阳光VS心情 阅读(495) 评论(0) 推荐(0) 编辑
摘要: #include #define F_LETTER 0#define F_SPACE 1#define IS_LETTER( _ch_ ) (_ch_ >= 'a' && _ch_ = 'A' && _ch_ <= 'Z') int main(){ char *str = "hello,world,a.a*a(a"; int flag = F_SPACE, n_word = 0; char *p = str; for(p = str; '\0' != *p; p ++ 阅读全文
posted @ 2013-10-08 18:56 阳光VS心情 阅读(180) 评论(0) 推荐(0) 编辑