uli*_*sBR 3 c embedded hungarian-notation freertos
我是 RTOS 和 C 编程的新手,而且我仍在习惯 C 的良好实践。因此,我打开了一个使用 FreeRTOS 的项目,我注意到操作系统文件使用匈牙利表示法。我知道一点符号,但在文件中遇到了一些新的“标准” FreeRTOS.h,它们是:
#ifndef configASSERT
#define configASSERT( x )
#define configASSERT_DEFINED 0
#else
#define configASSERT_DEFINED 1
#endif
Run Code Online (Sandbox Code Playgroud)
在那之下,
#ifndef INCLUDE_xTaskGetSchedulerState
#define INCLUDE_xTaskGetSchedulerState 0
#endif
#ifndef INCLUDE_xTaskGetCurrentTaskHandle
#define INCLUDE_xTaskGetCurrentTaskHandle 0
#endif
Run Code Online (Sandbox Code Playgroud)
我到处都看到过这个x - 就像x TaskGetCurrentTaskHandle一样。此外,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
Run Code Online (Sandbox Code Playgroud)
我到处搜索过这些“首字母缩写”代表什么,但仍然无法弄清楚。
因此,如果有人可以帮助我理解这一点,或者可以向我展示一条道路或其他东西,我将非常感激。
看着男人
命名约定
RTOS 内核和演示应用程序源代码使用以下约定:
变量
类型变量
uint32_t以ul为前缀,其中“u”表示“unsignedl ”表示long。类型变量以us
uint16_t为前缀,其中'u'表示 'unsigned','s' 表示。short类型变量的
uint8_t前缀为uc,其中“u”表示“无符号”,“c”表示char。非 stdint 类型的变量以 x 为前缀。示例包括
BaseType_t和TickType_t,它们是可移植层定义的类型定义,分别用于架构的自然或最有效类型以及用于保存 RTOS 滴答计数的类型。
Unsigned非 stdint 类型的变量有一个额外的前缀u。例如UBaseType_t(unsigned BaseType_t) 类型的变量带有前缀ux。类型变量
size_t也以x为前缀。枚举变量以e为前缀
指针有一个额外的前缀p,例如指向 a 的指针
uint16_t将有前缀pus。根据 MISRA 指南,不合格的标准 char 类型仅允许保存
ASCII characters并以c为前缀。根据 MISRA 指南,类型变量
char *只允许保存指向ASCII stringspc的指针。
强调我的
功能
文件范围静态(私有)函数以 prv 为前缀。
API 函数以其返回类型为前缀,按照为变量定义的约定,并添加前缀v
void。API 函数名称以定义它们的文件的名称开头。例如
vTaskDelete在tasks.c中定义,并且有一个void返回类型。
强调我的
宏
宏预先固定在定义它们的文件中。前缀是小写的。例如,
configUSE_PREEMPTION在 FreeRTOSConfig.h 中定义。除前缀外,宏全部大写,并使用下划线分隔单词。
强调我的
| 归档时间: |
|
| 查看次数: |
1116 次 |
| 最近记录: |