嵌入式C语言教程·工程文件中常见的注释用法。

目录

//双斜杠单行注释用法

/**/方法加注释

函数功能注释

源文件作者注释

预处理指令函数注释


                        ​​​​​​​        ​​​​​​​        编写不易,仅供学习,请勿搬运,感谢理解

  嵌入式C/C++语言教程专栏文章连接

本篇万字,博客最细,嵌入式C语言基础详解教程文章!!!(学不会来找我)_csdn嵌入式学习-优快云博客

C语言指针介绍加练习-优快云博客

嵌入式C语言,函数指针参数的用法详解!!!-优快云博客

C语言指针介绍加练习-优快云博客

你真的理解,volatile关键字嘛?,本篇3K字,放心食用,立志最细。(看不会找我!!!)_单片机防编译优化-优快云博客

//双斜杠单行注释用法

        在C语言工程文件中,//双斜杠加注释,是标准的单行注释用法,编译器会自动忽略这行//开始到行尾结束的内容,同时不会跨行影响到其他的代码内容,也因为这个特性所以只适合单行注释,如果用来多行注释,每次都要重复写一次//作为注释开通。

static int Flag_State; 
//static int Flag_State; 单行注释用法

          下面代码是使用 //作为多行注释,会显得繁琐还有点不好用。

static int Flag_State;
Flag_State = (++Flag_State)%2;

//static int Flag_State;
//Flag_State = (++Flag_State)%2;

              不过单行注释因为自身的特性,当需要再每行代码后面加注释来解释这行代码是干什么用的时候,更推荐单行注释,而不是多行注释,前者看起来更加简洁一点,虽然使用多行注释也能逐行解释代码的功能,但是明显不合适。

        同时 //单行注释最初来自于 C++,后来在C99标准中被引入C语言中,在设计时目的是为了提高代码的可读性,同时作为/* ... */ 这种注释方法的补充,而非代替,//较为适合单行注释,而/*...*/是为了满足多行注释的需求

/**/方法加注释

        上文提到了 /*...*/ 这种方法适合多行注释,也就是跨行大块注释。

函数功能注释

        一般用于对函数功能进行描述

/* 
   初始化GPIO引脚:
   1. 启用 GPIO 时钟
   2. 配置 GPIO 引脚为输入、输出或复用功能
   3. 根据模式选择上下拉或设置输出速度
*/
void GPIO_Init(int pin, int mode) {  
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = (1 << pin);  
    GPIO_InitStructure.GPIO_Mode = mode;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;     
    GPIO_Init(GPIOC, &GPIO_InitStructure);
}

源文件作者注释

         同时另一种多行注释常用的用法,就是对一个源文件进行添加注释,表明源文件编写的时间,源文件的作者,源文件的版本信息等等。

#ifndef _Init_H_
#define _Init_H_

/**
 * @file    Init.h
 * @brief   外设初始化封装文件
 * @author  看,是大狗
 * @version 1.0
 * @date    2024-12-21
 */



#endif

        上面的两种方法也就是多行注释最为常用的两种方法,给函数整体功能描述的时候,多行注释,函数源文件填写作者  时间  版本 的时候使用多行注释。

预处理指令函数注释

        使用预处理指令也能进行多行注释,但是这里需要一点预处理指令的基础知识,就不做讲解了,不会的可以看上面写的C语言基础文章,里面有讲到。

#if 0
void GPIO_Init(int pin, int mode) {  
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = (1 << pin);  
    GPIO_InitStructure.GPIO_Mode = mode;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;     
    GPIO_Init(GPIOC, &GPIO_InitStructure);
}
#endif

        这里的话,因为#if的条件为0,条件不成立,不编译语句块,但是这里需要注意的是,#if预处理指令的语句块的范围,#if开始标志着语句块的起始,知道编译器找到了#endif这个预处理指令结束标志语,才代表着语句块的结束,也就是说,在被 #if 到 #endif 之间包含的内容,都是#if预处理指令的语句块

        如果这里将条件改为 1,就能执行编译语句块了

#if 1
void GPIO_Init(int pin, int mode) {  
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = (1 << pin);  
    GPIO_InitStructure.GPIO_Mode = mode;      
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;    
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;     
    GPIO_Init(GPIOC, &GPIO_InitStructure);
}
#endif

                                           欢迎指正,希望对你,有所帮助!!!

评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看,是大狗

创作不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值