[英]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.