错误:在'isempty'之前预期'=',',',';','asm'或'__attribute__'

时间:2012-08-28 10:31:50

标签: c

我知道这个问题已在其他地方被问到,但阅读已经给出的答案并没有帮助我。我的代码非常简单但我无法编译它。我正在编写代码来构建堆栈。

这是我的stack.h

#ifndef GUARD
#define GUARD

struct Stack {

    struct Stack* next;
    int           data;
};
extern bool isempty (struct Stack*);

#endif

这是我的stack.c

#include <stdio.h>
#include <stdlib.h>

#include "stack.h"

bool isempty (struct Stack* st) {

    return (st == NULL);
}

编译器继续抱怨这一行:

extern bool isempty (struct Stack*);

main.c的内容无关紧要(现在它只返回0)。有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:7)

类型bool通常在C中不可用。

如果您的编译器支持C99,您可以添加

#include <stdbool.h>

让它可用。

更新:在我看来,使用C99并不是在“大型”的C程序中普遍存在,没有。大多数布尔值(例如函数返回)表示为int,这是它经典解决的方式。对于数组,你很可能会发现它们被表示为包装成例如unsigned int,而不是bool a[32];

但是,在采访的背景下,我认为对于一个没有退缩的候选人写上述内容会非常好。毕竟,这是13年前的标准化。

答案 1 :(得分:0)

如果你要比较St和NULL ...结果总是0或1 ...这不是C中的布尔类型。 您应该将isempty()的返回类型写为int ...