我有以下代码(在main.c中)初始化头文件(phOsal.h)中的typedef
结构。
的main.c
#include <phOsal.h>
...
phOsal_RPi_DataParams_t osal;
...
phOsal.h
/**
* \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 {...};
,然后使用main.c
struct dataparams osal;
中将其调用
非常感谢任何帮助。
答案 0 :(得分:-3)
选项是将结构声明为:
typedef struct phOsal_RPi_DataParams_t
{
...
}phOsal_RPi_DataParams_t;
当您在声明示例中使用typedef对结构进行别名时,请查看此处:
http://en.wikipedia.org/wiki/Struct_(C_programming_language)#typedef
如果你想要&#34; dataparams&#34;别名然后执行以下操作:
typedef struct phOsal_RPi_DataParams_t
{
...
} dataparams;
然后在main.c中抛弃结构并将其声明为:
dataparams osal;
您所声明的地点和主要地点的顺序可能是错误的,因为评论者建议,是的,包括应该在&#34;&#34;保持这一点。这是一个很好的榜样:
Unknown type name with typedef struct in C
因评论而编辑。