我环顾四周,尝试了一些事情,而不是当下工作。
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;
答案 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)
bool类型。您可以使用宏以方便的方式使用TRUE / FALSE值:
#define TRUE 1
#define FALSE 0
然后你可以在这样的条件语句中使用它:
if (var == TRUE){
}
如果您想使用'bool'作为关键字:
typedef int bool;
编辑:
我不知道,但@Bo Persson指出,已经引入了C99布尔类型。要使用它们包括以下原型:
#include <stdbool.h>