【问题标题】:function pointer in a struct with same argument type具有相同参数类型的结构中的函数指针
【发布时间】:2011-02-04 05:35:53
【问题描述】:

我正在尝试创建一个结构,该结构具有一个函数指针,该函数指针采用相同的结构作为参数。我现在有这个。

typedef struct sharedData
{
    sem_t* forks;
    int id;
    void (*forkFunc)(sharedData*);
};

我收到类似的错误

错误:在“*”标记之前应为“)”

和类似的警告

 warning: no semicolon at end of struct or union 
 warning: useless storage class specifier in empty declaration

我在这里做错了什么?

【问题讨论】:

  • 你的意思是改写 struct sharedData* 吗?

标签: c struct function-pointers


【解决方案1】:

问题在于,当您使用typedef struct 引入不需要struct 关键字的新struct 时,您不能在@ 的声明中引用typedef-ed 名称987654325@。相反,您需要使用结构的全名。例如:

typedef struct sharedData
{
    sem_t* forks;
    int id;
    void (*forkFunc)(struct sharedData*);
};

另外,您的typedef 语句当前无效,因为您没有给出调用struct sharedData 的名称。解决此问题的一种方法如下:

typedef struct sharedData
{
    sem_t* forks;
    int id;
    void (*forkFunc)(struct sharedData*);
} sharedData;

现在,您可以通过全名struct sharedData 或简写名称sharedData 来引用结构。

【讨论】:

  • 去掉最后的下划线;它只是丑陋和无用。对 struct 标签和 typedef 使用相同的名称是完全有效的。
  • @R..- 酷!我不知道。将更新我的原始帖子。
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 2015-09-15
  • 2020-07-03
相关资源
最近更新 更多