c语言编程规范第三部分

2023-05-16

3、头文件应向稳定的方向包含 头文件的包含关系是一种依赖,一般来说,应当让不稳定的模块依赖稳定的模块,从而当不稳定的模块发生变化时,不会影响(编译)稳定的模块。就我们的产品来说,依赖的方向应该是:产品依赖于平台,平台依赖于标准库。某产品线平台的代码中已经包含了产品的头文件,导致平台无法单独编译、发布和测试,是一个非常糟糕的反例。除了不稳定的模块依赖于稳定的模块外,更好的方式是两个模块共同依赖于接口,这样任何一个模块的内部实现更改都不需要重新编译另外一个模块。在这里,我们假设接口本身是最稳定的。

4、每一个 .c 文件应有一个同名 .h 文件,用于声明需要对外公开的接口如果一个.c文件不需要对外公布任何接口,则其就不应当存在,除非它是程序的入口,如main函数所在的文件。现有某些产品中,习惯一个.c文件对应两个头文件,一个用于存放对外公开的接口,一个用于存放内部需要用到的定义、声明等,以控制.c文件的代码行数。编者不提倡这种风格。这种风格的根源在于源文件过大,应首先考虑拆分.c文件,使之不至于太大。另外,一旦把私有定义、声明放到独立的头文件中,就无法从技术上避免别人include之,难以保证这些定义最后真的只是私有的。

4d38fe967ed945cfb2d066153c282f43.png

今日学习寄语:

1、最累的时候,家人是你最好的归宿。

  2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。

  3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。

  4、程序不是年轻的专利,但是,他属于年轻。

  5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。

  6、一个好汉三个帮,程序员同样如此。

  7、一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。

  8、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。

  9、程序是我的生命,但我相信爱她甚过爱我的生命。

  10、信念和目标,必须永远洋溢在程序员内心。

  11、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用Java进行底层开发更可笑的东西。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言编程规范第三部分 的相关文章

  • AES加密算法

    密钥类型 AES 128 xff1a 128位比特 xff08 16字节 xff09 AES 192 xff1a 192位比特 xff08 24字节 xff09 AES 256 xff1a 256位比特 xff08 32字节 xff09 一
  • Ros noetic : XTDrone安装

    一 安装参考 安装过程绝大部分参考如下的文件语雀 xff1a 仿真平台基础配置 进行配置 二 出现的错误以及需要注意的问题 这里的配置如下 xff1a ROS noetic Ubuntu20 04 python3 8 2 1 依赖安装 在
  • DQN、DDQN、Dueling DQN tensorflow2.0

    一 tensorflow2 0 实现DQN算法 算法代码如下 span class token keyword import span numpy span class token keyword import span tensorflo
  • PG-REINFORCE tensorflow 2.0

    REINFORCE 算法实现 REINFORCE算法是策略梯度算法最原始的实现算法 xff0c 这里采用tensorflow2 0进行实现 span class token keyword import span tensorflow sp
  • DDPG tensorflow 2.0

    DDPG算法的tensorflow2 0实现 算法的详细解析可以看DDPG解析 span class token keyword import span tensorflow span class token keyword as span
  • MADDPG tensorflow2.0

    MADDPG 的 tensorflow2 0实现 环境 MPE 对MPE环境进行了一些简单的修改 xff0c 目前只在MPE中的simple spread上进行了简单的测试 MADDPG代码 代码由于是自己写的 xff0c 可能有一些错误
  • 最短探索时间的一种想法——MADDPG

    前言 最近在做maddpg相关的项目时候 xff0c 涉及到了一些在固定地图的场景下 xff0c 采取何种探索方式 xff0c 能够使在最短的时间内 xff0c 探索尽可能多的地图内容 xff0c 对此做了一些努力 xff0c 一些朋友对此
  • 在NVIDIA Jetson Xavier NX上使用tensorflow-gpu

    在NVIDIA Jetson Xavier NX上使用tensorflow gpu 目前所做的项目需要在NVIDIA Jetson Xavier NX的ubuntu18 04的系统下配置ROS xff0c python3以及tensorfl
  • CSDN最全数学公式

    CSDN中的数学公式 1 加减乘除 a 43 b a 43 b a 43 b xff1a a 43 b a
  • 数据结构体系复构

    1 数组 数组是可以再内存中连续存储多个元素的结构 xff0c 在内存中的分配也是连续的 xff0c 数组中的元素通过数组下标进行访问 xff0c 数组下标从0开始 数组运算 xff1a 遍历 xff1a 遍历所有元素并进行打印 插入 xf
  • 指向void的指针

    万能指针 一个指向任何对象类型的指针都可以赋值给类型为void 的变量 xff0c void 可以赋值给另外一个void xff0c 俩个void 可以比较相等与否 xff0c 而且可以显式地将void 转换到另一个类型 其他操作都是不安全
  • nano 命令

    Nano命令指南 打开文件与新建文件 使用nano打开或新建文件 xff0c 只需键入 xff1a 代码 1 1 打开或新建文件 nano 文件名 Nano是一种单模式编辑器 xff0c 你可以直接输入文字 如果你要编辑一个像 etc fs
  • 四轴飞控pid simulink仿真

    今天是我写的第一篇博客hhh xff0c 可能文章思路混乱 xff0c 大家海涵 最近想自己用stm32搞一个四轴飞行器的飞控 xff0c 现在进展比较缓慢 xff0c 主要受制于想做一个wifi无线透传的视频实时传递 用了一个新的模块 x
  • 蓝桥杯嵌入式客观题总结

    一 CPU芯片 xff1a STM32F103RBT6 STM32 xff1a 32位的MCU xff08 ST 意法半导体公司 M xff1a 微控制器 32 xff1a 32bit xff09 F 61 通用类型 103 xff1a 中
  • 大学Python编程试卷真题!用python循环,输出1+11+111+1111+11111的值

    你用过的Python的库有哪些 分别用于工作中什么场景 这个是上一期讲的面试题拓展 那今天来再拓展一下 xff0c 讲一个算法题 利用python循环 xff0c 输出1 43 11 43 111 43 1111 43 11111的值 这个
  • Dockerfile 部署springboot 项目暨保留字指令讲解

    Dockerfile 部署springboot 项目暨保留字指令讲解 一 系统环境二 springboot 项目部署2 1 springboot 项目准备2 2 上传jar2 3 编写dockerfile 文件2 4 构建镜像并运行 三 保
  • ubuntu系统使用LVM,实现减小root分区并扩充swap交换分区(至最大8G)

    xff08 在安装系统时安装LVM逻辑卷管理 1 减小root分区 无法在线缩减root分区系统文件大小 xff0c 必须进入救援模式 xff08 使用启动盘 xff09 在救援模式下 xff0c 打开终端 执行 sudo lvscan 或
  • SLAM机器人开发(五)使用Improved_ORBSLAM2实时稠密重建教程

    使用Improved ORBSLAM2实时稠密重建教程 搭建ROS环境安装依赖库运行ORBSLAM2 App转换为Octomap地图并实现导航 在 SLAM机器人开发专栏中 xff0c 上一篇介绍了ORBSLAM的原理和一系列开源库 xff
  • ROS系列书籍--机械工业出版社

    ROS系列书籍 机械工业出版社 1 ROS机器人开发实践 xff08 作者 xff1a 胡春旭 xff09 2 机器人ROS开发实践 xff08 作者 xff1a 无为斋主 xff09 3 ROS机器人编程实践 xff08 作者 xff1a

随机推荐

  • 问题解决-----解决ROS程序注册(source devel/setup.bash)只在当前终端生效的问题

    64 TOC 解决ROS程序注册 source devel setup bash 只在当前终端生效的问题目录 在进行ROS的嵌入式编程的时候 xff0c 每次程序编写完成 xff0c 都需要进行编译 xff0c 这是ROS嵌入式开发的必要步
  • ROS学习【10】-----搭建Gazebo机器人物理仿真环境并展示空环境中的机器人

    ROS学习 搭建Gazebo机器人物理仿真环境并展示空环境中的机器人模型目录 一 运行Gazebo 查看是否能够正常打开程序1 新建一个终端 xff0c 运行Gazebo仿真软件2 应对Gazebo程序闪退的方法 二 搭建Gazebo机器人
  • 问题解决-----ROS中Gazebo学习的问题解决合集(初次运行黑屏、运行launch文件后闪退、黑屏;gazebo联合rviz出现process has died等的解决办法)

    问题解决 ROS中gazebo环境搭建学习的问题解决合集目录 一 初次运行Gazebo出现黑屏1 问题描述 xff1a 2 问题原因3 解决方法 二 编译gazebo的功能包出现编译错误1 问题描述2 问题原因3 解决方法 三 运行laun
  • TCP传输大文件(图片、文档)

    遇到TCP传输大文件问题 xff0c 主要是 xff08 1 xff09 传输快 xff0c 但拼接成的大文件数据错 xff08 2 xff09 加校验 xff0c 传输变慢 xff08 3 xff09 接收包数跟发送包数不对应 费了一段时
  • ROS学习【14】-----利用ROS中的导航框架(move_base,amcl),实现基于gazebo仿真机器人的自主导航

    64 TOC 上次的ROS学习 xff0c 我们通过SLAM框架下的gmapping及hector slam实现了手动控制我们Gzebo仿真机器人进行地图的规划 xff0c 并保存了相应的地图 xff0c 那么如何让自己人按照我们规划的路线
  • 抛出异常的简单处理

    span class token keyword function span span class token function func span span class token punctuation span span class
  • 进程切换过程

    在每个进程都有一个进程控制块 xff08 PCB xff09 进程主要分为 创建状态 xff0c 就绪状态 xff0c 运行状态 xff0c 阻塞状态 xff0c 结束态 PCB控制块是以链表方式存放 xff0c 就绪进程的PCB放置在同一
  • 第七篇(上),LQR工程化总结

    目录 一 引言 二 LQR 2 1 LQR的理解与实现 2 1 1 模型设计与实现 2 1 2 LQR工程实现步骤 2 2 参考资料 2 2 1 基础理论与模型的推导 2 2 2 Refer to Apollo 2 2 3 其它实例参考 2
  • STM32工程创建的快速方法

    1 Project gt New Project 2 打开新创建的工程的所在目录 xff0c 删除掉目录中的两个文件夹 xff0c 新创建4个文件夹 xff0c 分别是 xff1a USER CODE OBJ STM32F10 xFWLib
  • Ubuntu18.04下ROS的安装教程、rosdep init问题亲测解决方案

    一 确定自己的Ubuntu版本号 xff0c 并且安装正确的ros版本 lsb release a 查看ubuntu版本 二 更新源 sudo sh c 39 etc lsb release amp amp echo 34 deb http
  • MySQL相关面试题总结

    1 解释一下单列索引和联合索引 单列索引是指在表的某一列上创建索引 联合索引是在多个列上联合创建索引 单列索引可以出现在where条件的任何位置 而联合索引需要按照一定的顺序来写 在多条件查询的时候 联合索引的效率更高 我们联合索引也最多创
  • 修改firefox浏览器滚动条的样式

    最近做了一个网站的项目 xff0c 使用原生的滚动条 ie和谷歌都显示的好好的 xff0c 火狐的滚动条样式没有生效 原因 xff1a 火狐浏览器没有提供原生滚动条的方法和属性 后来浏览器升级之后提供了部分可以修改样式的属性 属性较多 xf
  • jetson nx ssd镜像克隆

    1 打开disk查看要克隆的ssd名称 2卸载ssd 制作镜像 sudo umount dev sdb1 sudo s sudo dd if 61 dev sdb1 conv 61 sync noerror bs 61 64k gzip c
  • Android 关于IPV6 DNS的问题

    目前在测试IPV6 DNS解析的时候发现一个问题 xff0c 这里记录一下 问题是 xff1a 当dhcpv6服务器分配的IPV6 dns是fe80类型的dns时 xff0c 无法发送dns请求 xff0c 抓包看不到有目标地址为fe80
  • PX4开发环境搭建

    PX4开发环境搭建 编译工具链的安装vscode 编译工具链的安装 下载ubuntu sh requirements txt wget https raw githubusercontent com PX4 Firmware master
  • TFmini在nora+(px4)上的使用和验证

    目标 xff1a 使用tfmini完成定高实验 设置 xff1a 1 sens tfmini cfg 设置为telem2 xff08 可修改为其他 xff0c 保证硬件连线一致 xff0c 1一般是无线数传所以没改过去 其他的对应在官网里有
  • ROS | Realsense中的IMU解算orientation

    文章目录 概述 一 定义介绍 二 操作教程 一 下载并编译imu tools功能包 1 创建工作空间并初始化 2 下载imu tools并编译 二 修改配置 1 修改imu tools源码 2 修改launch文件 3 启动解算 概述 本文
  • prometheus服务监控之mysql监控

    文章目录 上传解压安装mysqld exporter安装mariadb在数据库里创建mysql账号用户收集数据在mysql exporter中设置mysql配置信息启动mysql exporter配置prometheus拉取mysql节点信
  • HTTP请求头Authorization

    今天部署了一个Authorization项目 xff0c 由于改了auth服务器客户端id和密码 xff0c 而前端请求header没有修改 xff0c 登录时一直弹框要求输入用户名和密码 xff0c 输入后却无效 xff0c 只好改前端代
  • c语言编程规范第三部分

    3 头文件应向稳定的方向包含 头文件的包含关系是一种依赖 xff0c 一般来说 xff0c 应当让不稳定的模块依赖稳定的模块 xff0c 从而当不稳定的模块发生变化时 xff0c 不会影响 xff08 编译 xff09 稳定的模块 就我们的