首页 > 解决方案 > 在 C 中创建函数指针结构时从未完成的类型错误

问题描述

我正在尝试创建一个包含多个函数指针的结构,但是当我尝试创建该结构的实例时出现错误"variable "stCmdTable" was declared with a never-completed type"

我有一个头文件,其中包含以下代码:

typedef int (*pStCmd) (void);

struct stCmdStruc {
  pStCmd id;
  pStCmd measure;
  pStCmd setRelay;
};

typedef struct stCmdStruct stCmdStruct;

stCmdStruct stCmdTable;

我想创建stCmdTable函数并将其分配给 stCmdTable 中的所有函数指针,但是当它不喜欢我的stCmdTable.

我也尝试过做这样的事情,我尝试用我的结构定义直接初始化所有指向函数的函数指针,但它真的不喜欢expected a ";"在结构中每一行的末尾告诉我。

typedef int (*pStCmd) (void);

struct stCmdStruc {
  pStCmd id = sendId2;
  pStCmd measure = sendMeasurement2;
  pStCmd setRelay = setRelay2;
};

typedef struct stCmdStruct stCmdStruct;

stCmdStruct stCmdTable;

谁能阐明我做错了什么?

标签: cfunctionpointersstruct

解决方案


尝试这个 。. .

typedef int (*pStCmd_Type) (void);

typedef struct _stCmdStruct {
  pStCmd_Type id;
  pStCmd_Type measure;
  pStCmd_Type setRelay;
} stCmdStruct_Type;

stCmdStruct_Type stCmdTable[your_table_size];

stCmdTable[0].id = sendId2;
stCmdTable[0].measure = sendMeasurement2;
stCmdTable[0].setRelay = setRelay2;

推荐阅读