C语言的高级编程
 - 预定义宏
- 宏展开下的#与##的使用
- 常用的数据类型有
- 结构体定义
- 类型修饰符:对内存资源存放位置的限定,资源属性中位置的限定。
 
 
  
 
预定义宏
 
__FUNCTION__ 		
__LINE__			
__FILE__			printf(" the %s,%s,%d\n",__FUNCTION__,__FILE__,__LINE__);
 
宏展开下的#与##的使用
 
#define   ABC(x) 	#x			
#define   DAY(x)	day##x 		
 
#include <stdio.h>
#define ABC(x)	 #x
#define DAY(x)	 day##x
int main()
{printf(ABC(ab\n));		int day1 = 10;int day2 = 20;printf("the day is %d\n",DAY(1));		return 0;	
}
 
常用的数据类型有
 
| 数据类型 | 位宽 | 
|---|
| char | 8bit | 
| short | 16bit | 
| int | 32bit | 
| long | 64bit | 
| float | 23bit | 
| double | 64bit | 
 
结构体定义
 
typedef struct
{uint16_t temperature;  uint16_t humidity;     uint16_t corbon;       uint16_t NH3_Value;    uint16_t illumination; uint8_t sys_state;
} sensors_data_t;
sensors_data_t sensors_data = {0};           
 
struct student{char no[20];      char name[20];    char sex[5];      int age;          
};             
struct student stu1,stu2;
 
类型修饰符:对内存资源存放位置的限定,资源属性中位置的限定。
 
| 数据修饰符 | 解释 | 
|---|
| auto | 默认就是auto,分配的内存再可读可写区域 | 
| register | 存储在CPU中的寄存器中,不能用取地址符“&” | 
| const | 就意味着该变量里的数据只能被访问,而不能被修改,也就是意味着“只读”(readonly | 
| extern | extern声明外部符号,用来声明不在同一个源文件( .c文件)的变量,变量必须是全局变量 | 
| static | 修饰函数也会使得函数外部连接属性就变成内部连接属性。函数就只能在自己所在的.c文件看到,其他源文件就无法访问。 | 
| volatile | volatile就是使得被修饰的变量不去优化,一直放在内存中,提高对特殊地址位置的访问 |