c - 函数采用结构的头文件中的错误

标签 c

这个标题有什么问题? Gcc 抛出:

 libmmbox.h:7:29: error: expected ‘)’ before ‘*’ token
 libmmbox.h:8:27: error: expected ‘)’ before ‘*’ token

这是我的代码:

#ifndef __LIBMMBOX_H__
#define __LIBMMBOX_H__

int mmbox_connect(char *username);
int mmbox_login(int token, char *password);
int mmbox_quit();
int mmbox_stat(mmbox_stat_t *result);
int mmbox_list(mmbox_mail **l, int *num_msg);
int mmbox_send(char *dest, char *obj, void *buf, size_t size);
int mmbox_rcv(int id, void *buf, size_t size);
int mmbox_delete(int id);
int mmbox_resume(int id);

typedef struct
{
    char *user;     
    int used_space; 
    int free_space; 
    int num_msg;    
} mmbox_stat_t;

typedef struct 
{
    char *sender, *recipient; /
    char *obj, *date;         
    char flags;                      
    size_t size;              
} mmbox_mail;

#endif

最佳答案

mmbox_stat_t 结构在用于函数签名后声明。所以当你声明时编译器仍然不知道这个类型:

int mmbox_stat(mmbox_stat_t *result);

将函数原型(prototype)放在数据结构定义之后。

关于c - 函数采用结构的头文件中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5826342/

相关文章:

objective-c - 如何检查一个 NSInteger 是否大于另一个 NSInteger?

c - (gcc)go 中的打包结构

c - 将指向结构的指针作为参数有什么意义?

c - gdb 堆栈溢出

C 字符串在超过 7 个字符时表现异常

c++ - 在 C 语言中,除了使用 #define val 外不能改变结构属性

c - C 中不带分支的 double 或集合整数

c - 如何为 TMS320F2812 DSP 编写内存屏障?

java - 写 a==2 和 2==a 的区别

c - typedef 中的动态二维数组