首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言编程规范

2018 /10 图片来源于网络 C语言入门到精通 公众号 闫小林 C是一门朴素的语言,它是大部分程序员的入门语言,那么C语言的常见编程规范都有哪些呢 1 头文件: 1.头文件中适合放置接口的声明...,不适合放置实现 2.头文件应向稳定的方向包含,产品依赖于平台,平台依赖于标准库 3. .c/.h文件禁止包含用不到的头文件 4.每一个.c文件应有一个同名.h文件,用于声明需要对外公开的接口...5.禁止头文件循环依赖 6.头文件应当自包含(任意一个头文件均可独立编译) 7.禁止在extern"C"中包含头文件 8.禁止在头文件中定义变量,如果头文件被其他文件包含,会引发重复定义 9.只能通过包含头文件的方式使用其他....c提供的接口,禁止在.c中通过extern的方式使用外部函数接口、变量 10.如果一个模块包含多个子模块,则建议每一个子模块提供一个对外的.h,文件名为子模块名,降低接口使用者的编写难度 2 编码...C语言入门到精通 4 禁止内存泄漏: 1.异常出口处检查内存、定时器/文件句柄/Socket/队列/信号量/GUI等资源是否全部释放 2.删除结构指针时,必须从底层向上层顺序删除 3.使用指针数组时

32.7K3129

C语言编程规范 clean code

参考该规范之前,希望您具有相应的C语言基础能力,而不是通过该文档来学习C语言。...了解C语言的ISO标准; 熟知C语言的基本语言特性; 了解C语言的标准库; 总体原则 代码需要在保证功能正确的前提下,满足可读、可维护、安全、可靠、可测试、高效、可移植的特征要求。...extern "C" 通常出现在 CC++ 混合编程的情况下,在 extern "C" 中包含头文件,可能会导致被包含头文件的原有意图遭到破坏,比如链接规范被不正确地更改。...,其链接规范为 "C++"。...建议5.3 使用强类型参数,避免使用void* 尽管不同的语言对待强类型和弱类型有自己的观点,但是一般认为c/c++是强类型语言,既然我们使用的语言是强类型的,就应该保持这样的风格。

4.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C语言编程规范 clean code

    参考该规范之前,希望您具有相应的C语言基础能力,而不是通过该文档来学习C语言。...了解C语言的ISO标准; 熟知C语言的基本语言特性; 了解C语言的标准库; 总体原则 代码需要在保证功能正确的前提下,满足可读、可维护、安全、可靠、可测试、高效、可移植的特征要求。...extern "C" 通常出现在 CC++ 混合编程的情况下,在 extern "C" 中包含头文件,可能会导致被包含头文件的原有意图遭到破坏,比如链接规范被不正确地更改。...,其链接规范为 "C++"。...建议5.3 使用强类型参数,避免使用void* 尽管不同的语言对待强类型和弱类型有自己的观点,但是一般认为c/c++是强类型语言,既然我们使用的语言是强类型的,就应该保持这样的风格。

    5.5K10

    C语言高效编程与代码优化

    来源:公众号(c语言与cpp编程) 在本篇文章中,我收集了很多经验和方法。应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。...应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。 尽管在C代码优化方面有很多的指南,但是关于编译和你使用的编程机器方面的优化知识却很少。...所以,我对有用的和高效的方法进行了总结收集。同时,我还修改了其中的一些方法,使他们适用于所有的编程环境,而不是局限于ARM环境。 哪里需要使用这些方法? 没有这一点,所有的讨论都无从谈起。...C语言中,处理器中的N和Z标志位与下面的指令联系在一起:有符号关系运算x=0,x==0,x!=0;无符号关系运算x==0,x!=0(或者x>0)。...C语言没有借位和溢出位的概念,因此,如果不借助汇编,不可能直接使用借位标志C和溢出位标志V。

    3.2K10

    这才是理想中的 C 语言编程规范

    今天找了一篇编码规范分享大家,可以规避掉很多bug~ “简 介: 本文分析在头条上分享GitHub上一位老外的嵌入式C编码规范(收藏细读):嵌入式大杂烩。...关键词: 嵌入式,C语句,编程规范” 分享GitHub上一位老外的嵌入式C编码规范(收藏细读)[1] 01 最重要的规则 编写代码时最重要的一条规则是:检查周围的代码并尝试模仿它。   ...这是为C语言本身保留的 对于严格的模块私有函数,使用prv_ name前缀 对于包含下划线_ char的变量/函数/宏/类型,只能使用小写字母 左花括号总是与关键字(for, while, do, switch...; while (is_register_bit_set()) { } while (is_register_bit_set()) { } 如果while(或for、do-while等)为空(嵌入式编程中也可能是这种情况...ifdef __cplusplus } #endif /* __cplusplus */ #endif /* TEMPLATE_HDR_H */ 参考资料 [1] 分享GitHub上一位老外的嵌入式C编码规范

    2.4K20

    C编程规范整理

    当函数体比较小的时候,内联该函数可以令目标代码更加高效。内联那些包含循环或switch语句的函数是得不偿失的。...包含文件的名称及次序:C库、C++库、其他库的.h、项目内的.h。 编写短小函数。长函数有时是恰当的,因此对于函数长度并没有严格限制。...注意永远不要用自然语言翻译代码作为注释,要假设读你代码的人C/C++比你强。 TODO注释。对那些临时的、短期的解决方案,或已经够好但并不完美的代码使用TODO注释。...注释应考虑程序易读及外观排版的因紊,使用的语言若是中、英兼有的,建议多使用中文,除非能用非常流利准确的英文表达。对于有外籍员工的,由产品确定注释语言

    82320

    C语言初阶】掌握C语言调试技巧,迈向高效编程的阶梯

    前言:在C语言编程世界中,编写出能够正确运行且高效执行的代码是每一位程序员的追求。然而,在复杂的逻辑和多变的环境中,代码错误和性能瓶颈几乎是不可避免的。这时,掌握实用的调试技巧就显得尤为重要。...它要求我们不仅要熟悉C语言的语法和特性,还要掌握一系列高效的调试工具和技巧。...从简单的打印语句到复杂的调试器使用,从静态代码分析到动态性能监测,每一步都蕴含着提升编程能力的机会 本文旨在为广大C语言学习者提供一套实用的调试技巧指南。...总结 在探索C语言编程的征途中,调试技巧无疑是我们最宝贵的伙伴之一。...这些能力不仅让我们在编程领域更加游刃有余,也为我们的人生道路增添了无限可能 掌握C语言调试技巧,意味着我们能够更加自信地面对复杂的编程挑战,更加高效地解决代码中的难题。

    6310

    C语言命名规范

    C是一门朴素的语言,你使用的命名也应该这样。然而,当面对复杂情况时就有些棘手,给全局变量取一个描述性的名字是必要的。把一个全局函数叫做“foo”是一种目光短浅的行为。...Windows 编程中用到的变量(还包括宏)的命名规则为匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯-西蒙尼(Charles Simonyi) 提出的。...即:c_+变量命名规则;示例:const char* c_szFileName; 4-函数的命名规范 函数的命名应该尽量用英文(或英文缩写、中文全拼、中文全拼缩写)表达出函数完成的功能——函数名应准确描述函数的功能...5-函数参数命名规范 参数名称的命名参照变量命名规范。为了提高程序的运行效率,减少参数占用的堆栈,传递大结构的参数,一律采用指针或引用方式传递。...如:……cmCopyString(const CHAR * c_szSource, CHAR * szDest) 6-文件名 (包括动态库、组件、控件、工程文件等)的命名规范文件名的命名要求表达出文件的内容

    2.7K20

    单片机开发之C语言编程基本规范

    规范主要针对单片机编程语言和08编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。...1.基本规则 格式清晰、注释简明扼要、命名规范易懂、函数模块化、程序易读易维护、功能准确实现、代码空间效率和时间效率高、适度的可扩展性、单片机编程规范-标识符命名 2.标识符命名 2.1 命名基本原则...单片机编程规范-排版 5.1 缩进 代码的每一级均往右缩进4个空格的位置。不使用Tab键 5.2 分行 每行语句(?????...MCU C工程编程是面向硬件对象的。例如,要用MCU控制电机(Motor),在这样一个系统中,“面向硬件对象”概念体现在,工程中会创建“Motor.c”的源程序文件专门用于电机控制。...3) typedef和#define的用法 ① typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像

    1.8K20

    C++编程规范(五)

    1, 默认时使用vector,否则选择其他合适的容器 理由:编程时正确,简单和清晰是第一位的,其次才考虑效率 如需要在某个特定位置插入,使用序列容器 vector list 如需要随机访问迭代器,使用...vector deque或者string 如需要字典式查找,比如c[0]=42, 使用关联容器 set map 如已经证实查找速度是关键考虑因素,那应该根据实际性能数据,优先使用基于散列的容器,然后考虑使用有序的...(remove(c.begin(), c.end(),value), c.end()); remove remove_if 7, 用算法调用代替手工编写的循环方式 8,使用正确的stl查找算法 查找无序范围...partial_sort(c.begin(),c.begin()+3, c.end(),ScoreCompare); 10,避免使用类型分支,多使用多态 类型分支: Class Shape{ Enum...Void* pV=p1; T2*p2=static_cast(pV); 12, 不要使用C风格的强制转换,用C++的代替 C风格:Derived继承自Base Extern void

    58020

    高效R语言编程》7--高效优化

    软件配置 需要使用C++编译器,安装方法取决于操作系统,Linux:一般安装了R就会安装了;Mac:Xocode;Windows:Rtools,与版本要对应。...高效的基础R 改善性能的标准方式和替代方法 if与ifelse函数 marks <- runif(n=10e6, min=30, max=99) system.time({ result1 <- ifelse...is.na与anyNA 想了解一具向量是否包含任何缺失值,anyNA()更高效。 矩阵 数据框中提取行比矩阵中慢约150倍。...Rcpp C++是一个现代、快速并具有较强支持度的语言,包含各种库。Rcpp提供了一个友好的API,编写高性能代码,C++中瓶颈的典型是地址循环与递归函数。...add_r <- function(x, y) x * y # R语言版 # C++版 library(Rcpp) cppFunction( double add_cpp(double x, double

    1.3K40
    领券