stm32学习

文章详细介绍了C语言中的条件编译指令,如#ifdef和#ifndef用于根据标识符是否存在来选择性编译代码段。还讨论了typedef用于创建类型别名,extern关键字在不同源文件间共享变量,以及static如何影响变量和函数的作用域及存储。此外,提到了__weak关键字在函数重载中的作用以及结构体(struct)的声明和使用。
摘要由CSDN通过智能技术生成

 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

_ _weak函数和重写的函数不能放在同一文件。

A.c文件里
void weak(void)
{
    printf("s");
}

B.c文件里
_ _weak void weak(void)
{
    printf("a");
}

如果没有重新定义weak函数,则会调用B文件里的,如果又定义了会执行A文件里的,weak降低调用等级

struct

struct A     //结构体类型
{            //结构体成员(类型 成员名)

    int a;
    char b;
    float c;
} X,Y;        //结构体变量名


创建结构数组
struct 
{
    ...
    ...
    ...
}A[3]={{... , ... , ...},
      {... , ... , ...},
      {... , ... , ...}};


struct 
{
    ...
    ...
    ...
}A[]={{...},{...},{...}};



struct A
{
    ...
    ...
    ...
};
A[3]={{... , ... , ...},
      {... , ... , ...},
      {... , ... , ...}};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值