我试图在结构体中使用函数指针,而函数指针需要结构体本身的实例作为参数。我当前的代码片段如下所示:
#include "stdio.h"
#include "stdint.h"
typedef struct MYSTRUCT_S MYSTRUCT;
typedef struct {
int (*isInRange)(const MYSTRUCT* pDataPoint, const uint16_t newValue);
const uint16_t minValue;
const uint16_t maxValue;
} MYSTRUCT_S;
int isInRange(const MYSTRUCT* pDataPoint, const uint16_t newValue) {
MYSTRUCT* mDatapoint = (MYSTRUCT*)pDataPoint;
if ((newValue < mDatapoint->minValue) || (newValue > mDatapoint->maxValue)) {
return 0;
} else {
return 1;
}
}
int main() {
static MYSTRUCT* maDataPoint = NULL;
maDataPoint->isInRange(maDataPoint, 6);
return 0;
}
编译器抱怨:错误:无效使用不完整的 typedef 'MYSTRUCT' {aka 'struct MYSTRUCT_S'}”
我已经阅读了以下内容,但找不到我的问题的解决方案:
知道如何解决这个问题吗?
您定义了名为
MYSTRUCT_S
的类型,但未定义名为 struct MYSTRUCT_S
的类型。
typedef struct { ... } MYSTRUCT_S;
应该是
struct MYSTRUCT_S { ... };