#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LIMIT 100
/* Stack structure */
typedef struct stack
{
char x[LIMIT][10];
int top;
void push(char *s);
char *pop();
void init();
bool is_empty();
} stack;
/* Reset stack's top */
void stack init()
{
this->top = 0;
}
代码继续但它给出了错误:
main.c|14|error: field 'init' declared as a function|
有什么问题?我从昨天起就无法弄明白。请帮帮我。
答案 0 :(得分:7)
C中的结构不能具有功能。但是,他们可以指出功能
您需要重新定义struct stack
。
没有函数或指针的示例
struct stack {
char x[LIMIT][10];
int top;
};
void push(struct stack *self, char *s);
char *pop(struct stack *self);
void init(struct stack *self);
bool is_empty(struct stack *self);
带有函数指针的示例
struct stack {
char x[LIMIT][10];
int top;
void (*push)(struct stack *, char *);
char *(*pop)(struct stack *self);
void (*init)(struct stack *self);
bool (*is_empty)(struct stack *self);
};
struct stack object;
object.push = push_function; // function defined elsewhere
object.pop = pop_function; // function defined elsewhere
// ...
答案 1 :(得分:2)
C不能保存结构内的函数。但是,您可以放置一个函数指针。
void (*init)();