我是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
我到处搜索那些"首字母"代表,但仍然无法弄明白。
所以,如果有人能帮助我理解这一点,或者可以向我展示一条道路或什么的东西,我真的很感激。
答案 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_t
和TickType_t
,它们是用于体系结构的自然或最有效类型的可移植层定义的typedef,以及用于分别保存RTOS滴答计数的类型。
Unsigned
个变量有一个额外的前缀 u 。例如,UBaseType_t
(unsigned 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中定义。除了预修复,宏以全部大写编写,并使用下划线分隔单词。
强调我的