如何将函数指针放入c结构中,而函数指针的输入参数是结构本身(即c中的“this”指针)

问题描述 投票:0回答:1

我试图在结构体中使用函数指针,而函数指针需要结构体本身的实例作为参数。我当前的代码片段如下所示:

#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'}”

我已经阅读了以下内容,但找不到我的问题的解决方案:

知道如何解决这个问题吗?

c oop struct function-pointers
1个回答
0
投票

您定义了名为

MYSTRUCT_S
的类型,但未定义名为
struct MYSTRUCT_S
的类型。

typedef struct { ... } MYSTRUCT_S;

应该是

struct MYSTRUCT_S { ... };
© www.soinside.com 2019 - 2024. All rights reserved.