FreeRTOS匈牙利表示法

时间:2016-10-04 11:39:15

标签: c embedded freertos hungarian-notation

我是RTOS和C编程的全新手,我还是习惯了C好的做法。所以我打开了一个使用FreeRTOS的项目,我注意到OS文件使用匈牙利表示法。我知道一点点,但面对一些新的标准"在FreeRTOS.h文件中,它们是:

#ifndef configASSERT
    #define configASSERT( x )
    #define configASSERT_DEFINED 0
#else
    #define configASSERT_DEFINED 1
#endif

在此之下,

#ifndef INCLUDE_xTaskGetSchedulerState
    #define INCLUDE_xTaskGetSchedulerState 0
#endif

#ifndef INCLUDE_xTaskGetCurrentTaskHandle
    #define INCLUDE_xTaskGetCurrentTaskHandle 0
#endif

我已经在 x TaskGetCurrentTaskHandle 中看到了 x - 无处不在。此外, v pd 以及类似的变量名称,例如相关标题的第728行:

#if configENABLE_BACKWARD_COMPATIBILITY == 1
    #define eTaskStateGet eTaskGetState
    #define portTickType TickType_t
    #define xTaskHandle TaskHandle_t
    #define xQueueHandle QueueHandle_t
    #define xSemaphoreHandle SemaphoreHandle_t
    #define xQueueSetHandle QueueSetHandle_t
    #define xQueueSetMemberHandle QueueSetMemberHandle_t
    #define xTimeOutType TimeOut_t
    #define xMemoryRegion MemoryRegion_t
    #define xTaskParameters TaskParameters_t
    #define xTaskStatusType TaskStatus_t
    #define xTimerHandle TimerHandle_t
    #define xCoRoutineHandle CoRoutineHandle_t
    #define pdTASK_HOOK_CODE TaskHookFunction_t
    #define portTICK_RATE_MS portTICK_PERIOD_MS

    /* Backward compatibility within the scheduler code only - these definitions
    are not really required but are included for completeness. */
    #define tmrTIMER_CALLBACK TimerCallbackFunction_t
    #define pdTASK_CODE TaskFunction_t
    #define xListItem ListItem_t
    #define xList List_t

我到处搜索那些"首字母"代表,但仍然无法弄明白。

所以,如果有人能帮助我理解这一点,或者可以向我展示一条道路或什么的东西,我真的很感激。

1 个答案:

答案 0 :(得分:4)

查看the man

  

命名约定

     

RTOS内核和演示应用程序源代码使用以下约定:

     

<强>变量

     
      
  • uint32_t类型的变量带有 ul 前缀,其中&#39; u&#39; 表示unsigned&#39; l&#39; 表示long

  •   
  • uint16_t类型的变量以我们为前缀,其中&#39; u&#39; 表示未签名&#39 ;而且&#39;&#39;表示short

  •   
  • uint8_t类型的变量带有 uc 前缀,其中&#39; u&#39; 表示&#39; unsigned&#39 ;而且&#39; c&#39;表示char

  •   
  • 非stdint类型的变量以x 作为前缀。示例包括BaseType_tTickType_t,它们是用于体系结构的自然或最有效类型的可移植层定义的typedef,以及用于分别保存RTOS滴答计数的类型。

  •   非标准类型的
  • Unsigned个变量有一个额外的前缀 u 。例如,UBaseType_tunsigned BaseType_t)类型的变量以 ux 作为前缀。

  •   
  • size_t类型的变量也带有 x 前缀。

  •   
  • 枚举变量带有前缀 e

  •   
  • 指针有一个额外的前缀 p ,例如指向uint16_t的指针将有前缀 pus

  •   
  • 根据MISRA指南,不合格的标准字符类型仅允许保留ASCII characters,并以 c 为前缀。

  •   
  • 根据MISRA指南,char *类型的变量仅允许保留指向ASCII strings的指针,并且前缀为 pc

  •   

强调我的

  

<强>功能

     
      
  • 文件范围静态(私有)函数以prv。

  • 为前缀   
  • 根据为变量定义的约定,API函数以其返回类型为前缀,并为void添加前缀 v

  •   
  • API函数名称以定义它们的文件名开头。例如,vTaskDelete在tasks.c中定义,并且具有void返回类型。

  •   

强调我的

  

<强>的宏

     
      
  • 宏已使用定义它们的文件进行预先修复。 预修复是小写。例如,configUSE_PREEMPTION在FreeRTOSConfig.h中定义。

  •   
  • 除了预修复,宏以全部大写编写,并使用下划线分隔单词。

  •   

强调我的