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就是使得被修饰的变量不去优化,一直放在内存中,提高对特殊地址位置的访问