0

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

这是我的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*);

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

4

2 回答 2

7

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

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

#include <stdbool.h>

不过,让它可用​​。

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

但是,在面试的背景下,我认为候选人能毫不畏惧地写下上述内容会非常好。毕竟,它在 13 年前就已经标准化了。

于 2012-08-28T10:34:49.527 回答
0

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

于 2012-08-28T18:21:10.720 回答