ifdef
#ifdef X
....(如果X这个标识符定义了,运行这段程序)
#else
....(如果标识符没有定义,运行这段程序)
#endif (结束ifdef)
#ifndef X
....(如果X这个标识符没有定义,运行这段程序)
#else
....(如果标识符定义了,运行这段程序)
#endif (结束ifdef)
typedef
typedef unsigned char uint8_t(类型别名)
extern
extern 当申明的id不在同一个作用域时用extern申明
A文件
int a=10;
B文件 (直接使用a会报错,需要使用extern申明)
extern int a;
a=100;
static
Static申明的局部变量,存储在静态存储区 。
静态的局部变量在初始化时只会初始化一次,所以可以说static申明的局部变量,具有记忆功能。
Static申明的函数作用域仅限当前.c文件,其他.c无法调用
int getstaticvalue(void) (调用一次value就会加一,只有第一次value会赋0)
{
static int value=0;
value++;
return value;
}
int getstaticvalue(void) (调用一次value加一,再次调用value赋0重新加一)
{
int value=0;
value++;
return value;
}
_ _weak
A.c文件里标签:int,void,weak,value,STM32,申明,extern From: https://blog.51cto.com/u_15321522/6083872
void weak(void)
{
printf("s");
}
B.c文件里
_ _weak void weak(void)
{
printf("a");
}
如果没有重新定义weak函数,则会调用B文件里的,如果又定义了会执行A文件里的,weak降低调用等级