声明说明符中的两个或多个数据类型

时间:2011-08-21 14:56:28

标签: c declaration specifier

我环顾四周,尝试了一些事情,而不是当下工作。

main.c:13: error: two or more data types in declaration specifiers
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

我的代码几乎就是这个(我已经对所有内容进行了评论,所以它不是别的东西+除此之外没有其他文件);

main.h

struct savetype{
    bool file_exists;
}

的main.c

#include "main.h"
extern struct savetype save;
int main (void){
return 0;
}

stuff.c

#include "main.h"
struct savetype save;
save.file_exists=true;

3 个答案:

答案 0 :(得分:2)

C struct声明必须以分号结尾。在main.h的结构声明末尾加一个分号,你就可以了。

此外,除非您有其他代码定义,否则应该有bool类型。在C中,使用int而不是bool。

此外,标准C中没有true这样的东西; 0是假的,其他任何事都是真的,所以你也必须纠正stuff.c。

此外,stuff.c不应该编译,因为它包含任何函数之外的代码(不仅仅是声明)(特别是save.file_exists = true;

答案 1 :(得分:1)

这是问题所在:

struct savetype{
    bool file_exists;
};
^^^^ <-------------- Here!

你最后忘记了一个分号。

答案 2 :(得分:1)

C中不存在

bool类型。您可以使用宏以方便的方式使用TRUE / FALSE值:

#define TRUE 1
#define FALSE 0

然后你可以在这样的条件语句中使用它:

if (var == TRUE){

}

如果您想使用'bool'作为关键字:

typedef int bool;

编辑:

我不知道,但@Bo Persson指出,已经引入了C99布尔类型。要使用它们包括以下原型:

#include <stdbool.h>
相关问题