簡體   English   中英

c:類型名稱未知

[英]c: unknown type name

我有以下代碼(位於main.c中)初始化頭文件(phOsal.h)中的typedef結構。

main.c

#include <phOsal.h>
...
phOsal_RPi_DataParams_t osal;
...

語音

/**
* \brief RPi osal parameter stucture
*/
typedef struct
{
    uint16_t wId;            /**< ID of this component, do not modify */
    /* Other stuff */
    uint8_t * bLEDPins;
    uint8_t bLEDCount;

    uint8_t * bDIPSWPins;
    uint8_t bDIPSWCount;

    uint8_t bCommDev_ResetPin;
} phOsal_RPi_DataParams_t;

當我使用cmake命令cmake ./Source make編譯時,出現編譯錯誤。

error: unknown type name 'phOsal_RPi_DataParams_t'

如果我將其注釋掉,程序可以正常編譯。 同樣在main.c還有其他DataParams被聲明和使用,但不會引發編譯器錯誤。

我在這里閱讀了許多問題,但似乎都沒有錯,並嘗試了以下方法。

  • 檢查#ifndef#define是否正確
  • 將布局更改為struct dataparams {...}; 然后使用struct dataparams osal;main.c調用它struct dataparams osal;
  • 將包含更改為用“”代替<>

任何幫助將非常感激。

一種選擇是將您的結構聲明為:
typedef struct phOsal_RPi_DataParams_t { ... }phOsal_RPi_DataParams_t;
在聲明示例中使用typedef為結構別名時,請看這里:
http://zh.wikipedia.org/wiki/Struct_(C_programming_language)#typedef

如果要使用“ dataparams”別名,請執行以下操作:

typedef struct phOsal_RPi_DataParams_t
{

 ...
} dataparams;

然后在main.c中拋棄該結構並將其聲明為:

dataparams osal;

正如注釋者所建議的那樣,聲明它和主體的位置的順序可能是錯誤的,是的,應該在“”中包含該內容。 以下是一個很好的模型:
C中具有typedef結構的未知類型名稱

由於評論而被編輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM