在ubuntu 11.04上使用gcc 4.5.2声明函数指针时出错

doo*_*oon 0 c gcc

int (*foo)(epoll_event e, void *data);
Run Code Online (Sandbox Code Playgroud)

如果我用cc扩展名命名该文件,则会被接受.用.c扩展名

error: expected ‘)’ before ‘e’
Run Code Online (Sandbox Code Playgroud)

我google了,声明似乎对C有效.任何人都可以提供有关如何解决此问题的意见?谢谢

Ale*_*nze 9

我猜epoll_event不是类型名称,它是结构标记名称.

在这种情况下,您需要添加struct:

  int (*foo)(struct epoll_event e, void *data);
Run Code Online (Sandbox Code Playgroud)

这个页面暗示如下:

struct epoll_event {
    uint32_t     events;      /* Epoll events */
    epoll_data_t data;        /* User data variable */
};
Run Code Online (Sandbox Code Playgroud)