检查函数是否与C中的typedef函数类型相同?

时间:2017-10-04 21:07:19

标签: c types function-pointers

我有以下代码:

typedef int state_requester(void* request_paramaters);

int doSomething(state_requester* requester) {

    // This if statement is what I'm trying to
    // figure out how to do.

    if (requester isoftype state_requester) {
        requester(NULL);
        return 1;
    } 

    return 0;
}

我试图找到一种方法来验证 传递的参数实际上是有效的state_requester 在尝试执行它之前的函数格式。

以上代码仅作为示例,显然并不是事情真正起作用的方式。我只需要知道如何在函数typedef方面做if ( x isoftype y )

2 个答案:

答案 0 :(得分:1)

你不能在C中这样做。

在编译时检查类型,而不是运行时。

注意:requester类型为state_requester*,而不是state_requester

答案 1 :(得分:0)

虽然没有真正的方法来直接验证数据是否属于特定类型,但我已经提出了一种方法来推测'类型匹配。

这并非100%保证它将是指定的类型。但是,它会假定它基于类型代码。

我还添加了一些测试。我在几分钟内写完了这篇文章,所以我确信它还有改进的余地,我绝不是本土的开发者。我只是有需要并写下来。如果它对某人有帮助,真棒!

StrMethodFormatter