我知道这个问题已在其他地方被问到,但阅读已经给出的答案并没有帮助我。我的代码非常简单但我无法编译它。我正在编写代码来构建堆栈。
这是我的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)。有谁知道我做错了什么?
答案 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 ...