【问题标题】:Meaning of: void * _Nullable (* _Nonnull)(void * _Nullable)含义:void * _Nullable (* _Nonnull)(void * _Nullable)
【发布时间】:2019-11-10 13:30:59
【问题描述】:

我将函数传递给pthread_create 函数。我收到一条警告,抱怨作为参数传递的函数类型不兼容:

void * _Nullable (* _Nonnull)(void * _Nullable)

我通过将我的函数声明为:

void *incFunc(void *ptr){
    for (long i = 0; i < COUNT; ++i) { counter++;}
    return NULL;
}

,但我不太明白预期参数类型的含义:

void * _Nullable (* _Nonnull)(void * _Nullable)
  • void * _Nullable == 函数的返回类型应该是指向 void 的指针
  • (void * _Nullable) == 接受的参数是指向 void 的指针
  • (* _Nonnull) ????这是我不明白的那个

(* _Nonnull) 代表什么?

【问题讨论】:

  • 如果您尝试在那里传递空指针,可能是某些编译器扩展会导致警告。
  • 你可能想用objective-c标记问题
  • 我确实在 osx 上,但警告是 C 代码

标签: c function


【解决方案1】:

这意味着:

它必须不是 NULL 函数指针,带有 void * 参数,可以为 NULL 并返回 void *。返回值可以为NULL。

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 2017-07-15
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多