侵权投诉

整理总结一份属于自己的编码风格

2018-03-23 11:48 次阅读

看到别人的编写的代码规范非常羡慕,于是也整理总结一份属于自己的编码风格,用于规范自己的代码,增强可读性,非标准规范。强制自己形成良好的编码风格,有利于开发大规模程序而不显得杂乱。 参考STM32固件库编码风格和FreeRTOS编码风格。

一、工程文件组织结构

新建工程文件应包含以下全部或部分文件夹:

· usrSrc:用户源文件,用来存放.c文件和其他的源文件。main.c应放在这里。

· usrInc:用户头文件,用来存放.h文件。

· usrDoc:用户说明文档,用来存放用户在开发过程中书写的文档,一般为.txt格式。例如Readme.txt,指令说明等。

· Src:引用库的源文件。

· Inc:应用库的头文件。

· Lib:引用的库文件。  一个工程一定要包含一个main.c文件,只用来存放main函数。其余函数的定义应在相应的.c文件中,声明在相应的.h文件中。

源文件

· 文件头,文件的简介

/*************************************************************************

* Copyright (c) 2017, Jimbo Zhang

* All rights reserved.

*

* File name    :   USB_Ctrl.c

* Brief        :   USB API source code.

*               Introduce the main function or content of this document briefly.

* Revision     :   1.01

* Author       :   Jimbo Zhang

* Date         :   2017.03.10

* Update       :   Introduce the difference from previous version.*************************************************************************/

· 必要的注释和说明 源文件应该只包含它自己的头文件,其他的头文件在他自己的头文件中包含。 源文件中只声明局部函数,全局函数在头文件中声明。 全局变量在相应的源文件中定义,在头文件中用extern声明。 类型定义在头文件中定义。

/* Includes -----------------------------------------------------------*/

/*only include it's own header file, the others header file included by USB_Ctrl.h*/#include "USB_Ctrl.h"  

/* Declaration --------------------------------------------------------*/

/*here are the local function declare, global fuction declare in header file.*/

void delay( uint32_t n);

/* Global variable ----------------------------------------------------*/

· 函数头

/******************************************************* Brief     : Delay n ms* Parameter : *           n: the number of delay microsecond.* Return    : None.*******************************************************/

void delay( uint32_t n)

{    for( i=0; i<110; i++)        ;

}

头文件

· 文件头,文件的简介

/*************************************************************************

- Copyright (c) 2017, Jimbo Zhang

- All rights reserved.

-

- File name    :   USB_Ctrl.h

- Brief        :   The header file of USB_Ctrl.c.

- Revision     :   1.01

- Author       :   Jimbo Zhang

- Date         :   2017.03.10

- Update       :   Introduce the difference from previous version.*************************************************************************/

· 必要的注释和声明

/* Includes -----------------------------------------------------------*/

/* Define -------------------------------------------------------------*/

/* Typedef ------------------------------------------------------------*/typedef unsigned int apiStatus;     //api return code

/* Enume --------------------------------------------------------------*/

/* Extern -------------------------------------------------------------*/

/* Declaration --------------------------------------------------------*/

命名规则

参考FreeRTOS命名规则,MISRA C规范。 - 定义变量时尽量使用uint8_t 、uint16_t 、uint32_t等。头文件为stdint.h。

typedef signed char        int8_t;typedef short              int16_t;typedef int                int32_t;typedef long long          int64_t;typedef unsigned char      uint8_t;typedef unsigned short     uint16_t;typedef unsigned int       uint32_t;typedef unsigned long long uint64_t;    

· uint32_t类型的变量使用前缀ul,这里’u’表示’unsigned’,’l’表示’long’

· uint16_t类型的变量使用前缀us,这里’u’表示’unsigned’,’s’表示’short’

· uint8_t类型的变量使用前缀uc,这里’u’表示’unsigned’,’c’表示’char’

· 枚举类型变量使用前缀e

· 指针类型变量在类型基础上附加前缀p,比如指向uint16_t的指针变量前缀为pus

· 与MISRA指南一致,char类型变量仅被允许保存ASCII字符,前缀为c

· 与MISRA指南一致,char *类型变量仅允许指向ASCII字符串,前缀为pc

· 宏定义全部使用大写,两个单词之间用下划线隔开。

· 具有文件作用域的对象尽量声名为static的。

· 全局变量加前缀’g_’。整个工程都可以用的变量,不局限于文件作用域。

代码风格

· 缩进:缩进使用制表符,一个制表符等于4个空格。

· 注释:注释单行不超过80列,特殊情况除外。

· 布局:源代码应被设计成尽可能的易于查看和阅读。

下面的代码片中,第一部分展示文件布局,第二部分展示C代码设计格式。

/* #defines, 在合理的位置添加括号. */    #define A_DEFINITION    ( 1 )    

/*  

* 随后是Static (文件内部的)函数原型,   

* 如果注释有多行,参照本条注释风格---每一行都以’*’起始.  

*/    static void prvAFunction( uint32_t ulParameter );    

/* 文件作用域变量(本文件内部使用),要在函数体定义之前. */    static BaseType_t xMyVariable.    

/* 每一个函数的结束都有一行破折号,破折号与下面的第一个函数之间留一行空白。*/    

/*-----------------------------------------------------------*/    

void vAFunction( void )    

{    

/* 函数体在此定义,注意要用大括号括住 */    

}    /*-----------------------------------------------------------*/    

static UBaseType_t prvNextFunction( void )    

{    

/* 函数体在此定义. */    

}    /*-----------------------------------------------------------*/  

/*

* 函数名字总是占一行,包括返回类型。 左括号之前没有空格左括号之后有一个空格,

* 每个参数后面有一个空格,参数的命名应该具有一定的描述性.  

*/    void vAnExampleFunction( long lParameter1, unsigned short usParameter2 )   

{    /* 变量声明没有缩进. */    

uint8_t ucByte;    

/* 代码要对齐.  大括号占独自一行. */    

for( ucByte = 0U; ucByte < fileBUFFER_LENGTH; ucByte++ )    

{    

/* 这里再次缩进. */    

}    

}    

/*  

* for、while、do、if结构具有相似的模式。这些关键字和左括号之间没有空格。

* 左括号之后有一个空格,右括号前面也有一个空格,每个分号后面有一个空格。

* 每个运算符的前后各一个空格。使用圆括号明确运算符的优先级。不允许有0

* 以外的数字(魔鬼数)出现,必要时将这些数字换成能表示出数字含义的常量或

* 宏定义。

*/    for( ucByte = 0U; ucByte < fileBUFFER_LENGTH; ucByte++ )    

{    

}    

while( ucByte < fileBUFFER_LENGTH )    

{    

}    

/*  

* 由于运算符优先级的复杂性,我们不能相信自己对运算符优先级时刻保持警惕

* 并能正确的使用,因此对于多个表达式运算时,使用括号明确优先级顺序  

*/    if( ( ucByte < fileBUFFER_LENGTH ) && ( ucByte != 0U ) )    

{    

ulResult = ( ( ulValue1 + ulValue2 ) - ulValue3 ) * ulValue4;    

}    

/* 条件表达式也要像其它代码那样对齐。 */    #if( configUSE_TRACE_FACILITY == 1 )    

{    

/* 向TCB增加一个用于跟踪的计数器. */    

pxNewTCB->uxTCBNumber = uxTaskNumber;    

}    #endif    

/*方括号前后各留一个空格*/    

ucBuffer[ 0 ] = 0U;    

ucBuffer[ fileBUFFER_LENGTH - 1U ] = 0U;   

编程思想

· 将特定功能的代码封装成函数。

C语言编程规则

参考MISRA

· Rule1:不得使用三元操作符(? : )。

· Rule2:不得残留被注释掉的废代码。

· Rule3:所有标识符不超过31字符。

· 

Rule4:不同名空间中的变量名不得相同。 例如: typedef struct MyStruct {... } MyStruct; (违规)

· 

struct   Person   {     

char*   name;     

...     

};     

char   name[32];     (违规) 

· Rule5: 不得使用char, int, float, double, long等基本类型,应该用stdint.h中定义的类型显示表示类型的大小,如uint16_t、int32_t等。

· Rule6:禁止使用八进制数。(因为086U这样的常数很容易引起误解)。

· Rule7:不得定义与外部作用域中某个标识符同名的对象,以避免遮盖外部作用域中的标识符。

· Rule8:具有文件作用域的对象尽量声名为static的。

· Rule9:自动对象(栈对象)使用前必须赋初值。

· 

Rule10:操作符&&和||的右侧表达式不得具有副作用(side-effect)。 也就是说,象 if (x == 20 && ++y == 19)这样的表达式被禁止。

· 

· 

Rule11:不得对有符号数施加位操作,例如 1 << 4 将被禁止,必须写 1UL << 4。

· 

· Rule12:不得对有副作用的表达式施加sizeof操作符。

· Rule13: 除了循环控制语句,不得使用逗号表达式。

· Rule14:不得显式判断浮点数的相等性和不等性。

· Rule15:不得遗留“永远不会用到”的代码。

· Rule16:除了switch语句,不得使用标号(label)。

· Rule17:不得使用goto。

· Rule18:不得使用continue。

· Rule19:除了switch语句,不得使用break

· Rule20:if, else if, else, while, do..while, for语句块必须使用{}括起。

· Rule21:循环计数器的值不得在循环体内修改。

· Rule22:禁止任何直接和间接的递归函数调用。

· Rule23:不应该使用#undef。

· Rule24:不得将宏作为参数传给宏函数。

· Rule25:在一个宏定义中,#或##符号只能出现一次。

· Rule26:禁止指针运算(代之以数组下标运算)。

· Rule27:禁止超过两级的指针。

· Rule28:禁止使用指向函数的非常量指针。

· Rule29:禁止使用setjmp, longjmp。

· Rule30:禁止使用atoi, atof, atol。(这个我很赞成,建议使用strtol, strtod等函数)

· Rule31:禁止使用abort, exit, getenv。

原文标题:嵌入式er日常!强制自己形成良好的编码风格

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

瑞萨电子:嵌入式终端与人工智能融合改变工业格局

瑞萨电子在汽车、工业、基础设施和物联网等多个领域提供了专业可信的嵌入式设计与半导体解决方案,面对工业....
的头像 E4Life 发表于 07-10 18:47 93次 阅读
瑞萨电子:嵌入式终端与人工智能融合改变工业格局

LabView开发嵌入式系统的的挑战及应用解决方案

随着嵌入式系统的快速发展和复杂性的不断增加,基于文本的编程方式所面临的挑战愈发严峻,这种编程模式在将....
发表于 07-10 18:00 19次 阅读
LabView开发嵌入式系统的的挑战及应用解决方案

基于LabVIEW平台和CompactRIO开发移动机器人腿部动态步态

腿部和车轮这两种方法在地面运动平台上被广泛采用。经过漫长的演变过程,大多数陆地动物的腿部都灵活有力,....
发表于 07-10 17:16 44次 阅读
基于LabVIEW平台和CompactRIO开发移动机器人腿部动态步态

关于嵌入式Linux项目开发内容

 对于嵌入式Linux开发所需要的知识,也正是处理数据流转时所需要的技术, 对于嵌入式Linux项目....
发表于 07-10 16:57 6次 阅读
关于嵌入式Linux项目开发内容

关于ARM的三种中断调试方法介绍

在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,....
发表于 07-10 16:01 10次 阅读
关于ARM的三种中断调试方法介绍

基于FPGA和Nios II处理器IP软核实现实现SD卡接口和文件系统的设计

在嵌入式系统或移动设备上使用SD卡,接口的构建和文件系统实现是必须解决的问题。本文探讨在Cyclon....
发表于 07-10 10:19 76次 阅读
基于FPGA和Nios II处理器IP软核实现实现SD卡接口和文件系统的设计

使用C语言写出的九九乘法表

本文档的主要内容详细介绍的是使用C语言写出的九九乘法表资料合集免费下载。
发表于 07-10 08:00 8次 阅读
使用C语言写出的九九乘法表

单端口SRAM与双端口SRAM电路结构

SRAM是随机存取存储器的一种。所谓的静态是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。SRAM不需要刷新电...
发表于 07-09 14:38 439次 阅读
单端口SRAM与双端口SRAM电路结构

搞嵌入式,软件和硬件哪个更重要?

据王利涛表示,很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板。买一块开发板,然后在上....
的头像 玩转单片机 发表于 07-09 09:10 182次 阅读
搞嵌入式,软件和硬件哪个更重要?

C语言之结构体的声明与定义

我们刚刚申请了一个名叫Info的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的....
的头像 玩转单片机 发表于 07-09 09:06 121次 阅读
C语言之结构体的声明与定义

如何把C++的源程序改写成C语言

由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C+...
发表于 07-08 20:51 133次 阅读
如何把C++的源程序改写成C语言

香橙派开发板Orange Pi 4在Linux系统下如何使用PWM

香橙派4电脑开发板使用Rockchip RK3399主控芯片,拥有双通道4GB LPDDR4内存 ,板载16GB EMMC flash存储,支持运...
发表于 07-08 20:51 549次 阅读
香橙派开发板Orange Pi 4在Linux系统下如何使用PWM

基于ARM嵌入式人机交互的设计方案

人机交互过程中获得人的动作是一个关键,为了实现手部姿态的实时跟踪控制,分析了手形及手部的运动形式和特....
发表于 07-08 18:09 25次 阅读
基于ARM嵌入式人机交互的设计方案

嵌入式设计降低硬件功耗的方法

  (1)低功耗外围器件的选用   完成同样的功能,电路的实现形式有多种。例如,尽可能地将嵌入式系统的内部存储器RAM转换...
发表于 07-08 15:52 67次 阅读
嵌入式设计降低硬件功耗的方法

嵌入式uClinux的内核结构和开发环境

  1 引言   嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统。比如ARM7TDMI...
发表于 07-08 15:36 59次 阅读
嵌入式uClinux的内核结构和开发环境

概述ARM处理器的工作状态和工作模式

为了能够体现ARM的特点和性能,ARM处理器有两种工作状态和7种工作模式。
发表于 07-08 15:29 44次 阅读
概述ARM处理器的工作状态和工作模式

如何使用ARM9实现串行通讯的设计方案

嵌入式是以应用为中心,以计算机技术为基础,软硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗....
发表于 07-08 14:31 16次 阅读
如何使用ARM9实现串行通讯的设计方案

嵌入式Linux系统篇:RealARM2410技术手册

  RealARM2410是基于三星公司S3C2410X 高性能ARM 处理器的嵌入开发平台,旨在为....
发表于 07-07 16:35 33次 阅读
嵌入式Linux系统篇:RealARM2410技术手册

简易嵌入式计算器的设计方案

  随着电子科技技术的不断发展在当今社会计算器已深入人们生活中给人们的生活带来了方便推动了社会的发展....
发表于 07-07 16:25 44次 阅读
简易嵌入式计算器的设计方案

单片机C语言程序设计的详细资料

C语言目前己成为电子工程师进行单片机系统开发时的常用编程语言。用C语言来编写目标系统软件,会大大缩短....
发表于 07-07 14:48 50次 阅读
单片机C语言程序设计的详细资料

I.MX6ULL终结者开发板裸机仿真jlink调试

I.MX6ULL‘终结者’开发板预留了JTAG仿真接口,并给出了开发文档,可以实现在JLINK仿真器条件下的单步跟踪、断点...
发表于 07-07 10:56 183次 阅读
I.MX6ULL终结者开发板裸机仿真jlink调试

智能安防:网络视频存储服务器的重要性

网络视频存储服务器是一种用于视频和音频数据压缩、存储和处理的嵌入式设备。它广泛应用于远程监控和bbb....
的头像 如意 发表于 07-07 10:40 101次 阅读
智能安防:网络视频存储服务器的重要性

香橙派OrangePi 3 开发板在Linux系统下如何使用蓝牙

这款开发板体积小,却集成了丰富的接口,板载wifi+蓝牙,拥有mini PCIE接口,千兆网口,MIC音频输入口,HDMI2.0a和3.5...
发表于 07-06 17:19 456次 阅读
香橙派OrangePi 3 开发板在Linux系统下如何使用蓝牙

双端口SRAM如何提高系统的整体性能

SRAM 以其高速、静态的优点广泛应用于各种数字设备中,多被用作不同部件之间的缓冲,尤其在计算机体系架构中扮演着重要的角色...
发表于 07-06 16:26 1120次 阅读
双端口SRAM如何提高系统的整体性能

Linux主要应用在那些领域

日前,国际超算大会发布了最新的全球TOP500超级计算机列表,其中最著名的是日本超级计算机“ Fug....
的头像 Wildesbeast 发表于 07-04 11:38 379次 阅读
Linux主要应用在那些领域

什么是嵌入式与物联网,物联网与嵌入式之间的关系

互联网着重信息的互联互通和共享,解决的是人与人的信息沟通问题;物联网则是通过人与人、人与物、物与物的....
发表于 07-03 14:23 94次 阅读
什么是嵌入式与物联网,物联网与嵌入式之间的关系

浅谈2020年六大主流编程语言

目前,计算机语言的总数总计达9000种。但是,其中只有50种编程语言是较为流行的。今天,小编就给大家....
的头像 如意 发表于 07-03 11:36 297次 阅读
浅谈2020年六大主流编程语言

单片机教程之C语言的程序设计说明

C51是在标准C的基础上,根据单片机存储器硬件结构及内部资源,扩展了相应的数据类型和变量,而C51在....
发表于 07-02 17:45 55次 阅读
单片机教程之C语言的程序设计说明

非易失性MRAM读写操作

高密度MRAM具有非常低的功率,高的读取速度,非常高的数据保留能力和耐久性,适用于广泛的应用。单元面积仅为0.0456平方微米...
发表于 07-02 16:33 1678次 阅读
非易失性MRAM读写操作

嵌入式必看 Linux内存管理工作原理

机器的内存是有限资源,而进程数量是无法确定的,如果在某些时候已经启动的进程占据了所有内存空间,此时就....
发表于 07-02 15:10 219次 阅读
嵌入式必看 Linux内存管理工作原理

c语言宏定义的使用方法

当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。但是并没有如何将用于其他目的的宏大写的统一做....
发表于 07-02 15:04 95次 阅读
c语言宏定义的使用方法

C语言二级指针的用法与原理

提到指针,我们都知道指针是用来存储一个变量的地址。所以,当我们定义了一个指向指针的指针的时候(poi....
发表于 07-02 14:52 87次 阅读
C语言二级指针的用法与原理

关于NRZ与PAM4信号差异

PAM4是PAM(Pulse Amplitude Modulation,脉冲幅度调制)调制技术的一种....
的头像 电磁兼容小小家 发表于 07-02 14:40 279次 阅读
关于NRZ与PAM4信号差异

曙光中标分布式块存储产品集采 中国移动给大订单

近年来,分布式存储技术在电信行业得到广泛的推广,在云化转型、 IoT、5G 等新兴业务,虚拟化资源池....
发表于 07-02 09:07 67次 阅读
曙光中标分布式块存储产品集采  中国移动给大订单

嵌入式ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列

ARM的Jazelle技术使Java加速得到比基于软件的Jaarm处理器阶梯图va虚拟机(JVM)高....
的头像 ARM视频 发表于 07-02 08:36 762次 观看
嵌入式ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列

HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

链接:https://pan.baidu.com/s/1HFxkb4O1jAZvCEccWVcd4w 提取码:stns 回复可见提取码,资源需求可加q1051514663 ...
发表于 07-01 18:20 85次 阅读
HW资料华-为硬件(硬件开发C语言PCB设计天线通信)

8位的MCU的情形又如何,很多嵌入式工程师都有一些误解

不少人会认为既然现在市场的宠儿是32位的MCU,厂商们是不是都没有投入研发资源在8位产品上了。这么想....
的头像 玩转单片机 发表于 07-01 16:58 286次 阅读
8位的MCU的情形又如何,很多嵌入式工程师都有一些误解

梳理嵌入式Linux的一些知识

学单片机的朋友有些已经有一些Linux基础了,但也不乏有些朋友没用过Linux,甚至有些初学的读者朋....
的头像 玩转单片机 发表于 07-01 16:56 460次 阅读
梳理嵌入式Linux的一些知识

C语言和PHP,新手选择哪个比较好?

计科专业从事嵌入式开发多年,从现在的市场行情以及就业的机会上讲php的就业空间还是大于C语言,但并不....
的头像 如意 发表于 07-01 16:15 129次 阅读
C语言和PHP,新手选择哪个比较好?

基于PSoC3可编程嵌入式片上系统的智能手机电池充电器

  PSoC®3是一款真正的可编程嵌入式片上系统,在单个芯片上集成了可配置的模拟和数字外设功能,存储....
的头像 Cypress视频 发表于 07-01 12:23 273次 观看
基于PSoC3可编程嵌入式片上系统的智能手机电池充电器

Python的发展趋势,未来可期

首先,当前Python作为一门流行程度比较高的全场景编程语言,在IT互联网行业和一部分传统行业已经有....
的头像 如意 发表于 07-01 10:19 225次 阅读
Python的发展趋势,未来可期

采用MPLAB代码配置器配置ADC及FVR

MPLAB 集成开发环境(IDE)是综合的编辑器、项目管理器和设计平台,适用于使用Microchip....
的头像 Microchip视频 发表于 07-01 10:08 533次 观看
采用MPLAB代码配置器配置ADC及FVR

CompactRIO系统拥有坚固的硬件架构

CompactRIO是美国国家仪器(NI)公司生产的一款可重新配置的嵌入式测控系统。CompactR....
的头像 NI视频 发表于 07-01 08:20 752次 观看
CompactRIO系统拥有坚固的硬件架构

怎么样才能在Keil C51环境下实现64位浮点库的设计

为解决Keil C51环境下无法进行64位双精度计算的问题,采用分部存储和分部计算的方法,设计了在K....
发表于 07-01 08:00 18次 阅读
怎么样才能在Keil C51环境下实现64位浮点库的设计

怎么样才能使用Keil C51开发大型嵌入式程序

 结合在8051系列单片机平台上的实际开发应用的经验,介绍用 Keil C在8051单片机上进行大型....
发表于 07-01 08:00 18次 阅读
怎么样才能使用Keil C51开发大型嵌入式程序

详谈选择排序算法的定义和过程

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数....
的头像 如意 发表于 06-30 17:06 90次 阅读
详谈选择排序算法的定义和过程

KUKA.ProConOS软件功能简史

ProConOS是一款高性能PLC运行时间引擎,专为基于嵌入式和PC的控制应用而设计。ProConO....
的头像 机器人及PLC自动化应用 发表于 06-30 15:54 155次 阅读
KUKA.ProConOS软件功能简史

数码管显示拨码开关编码的程序和工程文件免费下载

本文档的主要内容详细介绍的是数码管显示拨码开关编码的程序和工程文件免费下载。
发表于 06-30 08:00 15次 阅读
数码管显示拨码开关编码的程序和工程文件免费下载

C语言模拟实现memmove函数

memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmo....
的头像 如意 发表于 06-29 17:53 99次 阅读
C语言模拟实现memmove函数

C语言模拟实现memcpy函数

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起....
的头像 如意 发表于 06-29 17:29 187次 阅读
C语言模拟实现memcpy函数

ISD4002语音录放电路的设计C语言程序免费下载

  本文档的主要内容详细介绍的是ISD4002语音录放电路的设计C语言程序免费下载。
发表于 06-29 17:20 15次 阅读
ISD4002语音录放电路的设计C语言程序免费下载

简易LCD示波器设计的C语言程序免费下载

本文档的与内容详细介绍的是简易LCD示波器设计的C语言程序免费下载。
发表于 06-29 17:20 32次 阅读
简易LCD示波器设计的C语言程序免费下载

液晶GPS定位信息显示器的设计C语言程序免费下载

本文档的主要内容详细介绍的是液晶GPS定位信息显示器的设计C语言程序免费下载。
发表于 06-29 17:20 36次 阅读
液晶GPS定位信息显示器的设计C语言程序免费下载

超声波测距器设计的C语言程序免费下载

本文档的主要内容详细介绍的是超声波测距器设计的C语言程序免费下载。
发表于 06-29 17:20 34次 阅读
超声波测距器设计的C语言程序免费下载

远程电话控制器设计的C语言程序免费下载

本文档的主要内容详细介绍的是远程电话控制器设计的C语言程序免费下载。
发表于 06-29 17:20 36次 阅读
远程电话控制器设计的C语言程序免费下载

C语言模拟实现strcmp函数

C语言模拟实现strcmp函数
的头像 如意 发表于 06-29 16:51 208次 阅读
C语言模拟实现strcmp函数

C语言模拟实现strstr函数

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数....
的头像 如意 发表于 06-29 16:36 358次 阅读
C语言模拟实现strstr函数

C语言模拟实现strcat函数

C语言模拟实现strcat函数
的头像 如意 发表于 06-29 16:18 171次 阅读
C语言模拟实现strcat函数

C语言模拟实现strcpy

strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有’\0’结束符的字符串复制....
的头像 如意 发表于 06-29 15:54 143次 阅读
C语言模拟实现strcpy

C语言模拟实现strlen的步骤

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是....
的头像 如意 发表于 06-29 15:48 158次 阅读
C语言模拟实现strlen的步骤