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