2

私は 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を見てきました- x TaskGetCurrentTaskHandleのように- どこでも。また、問題のヘッダーの行のように、 vpd 、およびそのような変数名: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

これらの「イニシャル」が何を表しているのかをどこでも検索しましたが、それでもわかりませんでした。

ですから、誰かがこれを理解するのを手伝ってくれたり、道や何かを教えてくれたりしたら、本当に感謝しています.

4

1 に答える 1

4

を見て

命名規則

RTOS カーネルとデモ アプリケーションのソース コードでは、次の規則が使用されます。

変数

  • タイプの変数にuint32_tは接頭辞ulが付きます。'u 'は を表しunsigned'l'は を表しlongます。

  • タイプの変数にuint16_tは接頭辞usが付きます。 「u」は「unsigned」を表し、「s」は を表しshortます。

  • タイプの変数にuint8_tは接頭辞ucが付きます。 「u」は「unsigned」を表し、「c」は を表しcharます。

  • stdint 型以外の変数には、接頭辞 x が付きます。例には BaseType_tTickType_tが含まれます。これらはそれぞれ、アーキテクチャの自然なまたは最も効率的な型と、RTOS ティック カウントを保持するために使用される型のポータブルなレイヤー定義の typedef です。

  • Unsigned非 stdint 型の変数には、追加のプレフィックスuがあります。たとえば、UBaseType_t( unsigned BaseType_t) 型の変数には接頭辞uxが付きます。

  • 型の変数にはxsize_tという接頭辞も付けられます。

  • 列挙型変数にはeという接頭辞が付きます

  • ポインターには追加のプレフィックスpが付きます。たとえば、a へのポインターにuint16_tはプレフィックスpusが付きます。

  • MISRA ガイドに沿って、修飾されていない標準の char 型は保持のみが許可され、ASCII characters接頭辞cが付けられます。

  • MISRA ガイドに沿って、型の変数はchar *ポインターを保持することのみが許可されASCII strings、接頭辞pcが付けられます。

強調鉱山

機能

  • ファイル スコープの静的 (プライベート) 関数には、prv というプレフィックスが付きます。

  • API 関数には、変数に対して定義された規則に従って、戻り値の型の接頭辞が付けられ、接頭辞v forが追加されますvoid

  • API 関数名は、それらが定義されているファイルの名前で始まります。たとえばvTaskDelete、tasks.c で定義され、void戻り値の型があります。

強調鉱山

マクロ

  • マクロは、それらが定義されているファイルに事前に固定されています。プレフィックスは小文字です。たとえばconfigUSE_PREEMPTION、FreeRTOSConfig.h で定義されています。

  • プレフィックスを除いて、マクロはすべて大文字で書かれ、アンダースコアを使用して単語を区切ります。

強調鉱山

于 2016-10-04T12:32:52.097 に答える