C语言笔录- 1
- #define
C语言中,可以用 #define 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。预编译又叫预处理。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。
#define 标识符 常量 (注意, 最后没有分号)
注释:#define 和 #include 一样,也是以“#”开头的。凡是以“#”开头的均为预处理指令
#define又称宏定义,标识符为所定义的宏名,简称宏。标识符的命名规则与前面讲的变量的命名规则是一样的。#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。是不是与定义变量类似?但是要区分开!变量名表示的是一个变量,但宏名表示的一个常量。可以给变量赋值,但绝不能给常量赋值。
宏定义 #define 一般都写在函数外面,与 #include 写在一起。当然,写在函数里面也没有语法错误,但通常不那么写。#define 的作用域为自 #define 那一行起到源程序结束。如果要终止其作用域可以使用 #undef 命令,格式为:
#undef 标识符
那么这个宏的作用范围到此就结束了。#undef 用得不多,但大家要了解。
.
.
-
C 语言中 void 详解及应用*
void 在英文中作为名词的解释为 “空虚、空间、空隙”,而在 C 语言中,void 被翻译为"无类型",相应的void * 为"无类型指针"。 -
#ifndef–#define–#endif
#ifndef __LED_H
#define __LED_H
如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中,如下:
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5
void LED_Init(void);//初始化
#endif
这种结构就是通常所说的包装器 #ifndef。当再次引用头文件时,条件为假,因为__LED_H 已定义。此时,预处理器会跳过文件的整个内容,编译器会忽略它。
C语言 (1 << 0)
指的是将1的二进制,左移0位。
形如:a<<x
将a的二进制左移x位
~ (1 << 1) 指的是将1的二进制,左移0位取反
>~XXXX XXX1 = XXXX XXX0
~ (1 << 0) 指的是将1的二进制,左移0位取反
>~XXXX XX10 = XXXX XX0X
#endif