zoukankan      html  css  js  c++  java
  • 我觉得 一个 单片机 代码 程序猿 连一个链表都不会写的 话 ,太说不过去了 ,学习 一下

    链表

    1、线性链表

       

     1 //最简单的 线性 链表
     2 
     3 //首先要定义一个结构体
     4 
     5 //遵循了以下 几点 规则
     6   /*
     7    * 1、结构体名称要全部大写,单词之间用下划线 隔开
     8    * 2、变量名称首个单词的首字母小写,单词之间首字母大写
     9     * 3、CB 代表 回调函数(借鉴TI 的蓝牙协议栈,callback)
    10    * 4、出现数字 全部宏定义代替
    11    * 5、指针变量名称前 + "p"
    12    * 6、函数名称首个单词的首字母大写(用于区分变量还是函数名)
    13
    14   */
    15 
    16 #define COMMAND_LENGTH_MAX 50 //命令存放buffer的最大长度
    17 
    18 struct COMMAND_LIST
    19 {
    20 
    21   unsigned char commandBuffer[COMMAND_LENGTH_MAX]; //存放命令
    22 
    23   unsigned int commandLength; //命令的 长度
    24 
    25   unsigned int commandSendCounter; //命令发送的次数
    26 
    27   unsigned char commandReplyState; //命令的应答状态
    28 
    29   void (*pCommandReplyCB)(void); //该指令应答消息的处理回调函数指针
    30 
    31   struct COMMAND_LIST *pCommandListNext;
    32 
    33 }

     

    上面 的 代码 存在一下 的问题:  

        1、结构体  对齐 的 问题

        2、内存浪费的问题

    最后 定义是这样的 !

     1  
     2  struct COMMAND_LIST
     3  {
     4      
     5      unsigned char *pCommandBuffer;             //存放命令缓冲区指针
     6      
     7      unsigned int  commandLength;               //命令的 长度
     8      
     9      unsigned int  commandSendCounter;          //命令发送的次数
    10      
    11      unsigned char commandReplyState;           //命令的应答状态
    12      
    13      unsigned char structAlignmentBuffer[3]; //结构体 对齐buffer (备用功能)根据结构体而定
    14      
    15      void (*pCommandReplyCB)(void);          //该指令应答消息的处理回调函数指针
    16      
    17      struct COMMAND_LIST *pCommandListNext;
    18      
    19  }
    20  
  • 相关阅读:
    Docker生态会重蹈Hadoop的覆辙吗?
    刘志强博士:专业涵养 奉献情怀
    Sublime Text3前端必备插件
    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
    jvm的stack和heap,JVM内存模型,垃圾回收策略,分代收集,增量收集(转)
    Eclipse安装MAT插件
    tomcat内存泄漏存入dump文件
    CSS中behavior属性语法简介
    get/post时中文乱码问题的解决办法
    Java序列化的机制和原理
  • 原文地址:https://www.cnblogs.com/suozhang/p/6297743.html
Copyright © 2011-2022 走看看