我正在尝试创建头文件(其中将包含我为AVL树编写的函数),但是我遇到了一个小问题,并且对include Guard的语法有误解。
现在我的代码看起来像这样
#ifndef STDIO_H
#define STDIO_H
#endif
#ifndef STDLIB_H
#define STDLIB_H
#endif
#ifndef CONIO_H
#define CONIO_H
#endif
问题是,我认为它仅包含。 当我尝试使用malloc时,它说malloc是未定义的,即使我包括了stdlib。
根据http://www.cprogramming.com/reference/preprocessor/ifndef.html的介绍,如果我理解正确,ifndef会检查是否定义了令牌,如果令牌不是,它将定义我在ifndef之后直到#endif编写的所有内容。 所以我的代码应该工作。
是否定义了stdio? 没有。 所以定义它。 万一。 是stdlib定义的? 没有。 所以定义它。 万一。 是conio定义的吗? 没有。 所以定义它。 万一。 我没看到问题。
如果要添加这3个标题,正确的语法是什么?
您的代码没有include任何东西。 您是否认为可以使用包含防护而不是包含?
#define然后做什么?
您不应该为标准标头提供包含防护。 您提供它们以围栏标头。 而且您不#include-进行任何操作,因此我只能想象警告您的"未声明的函数xxxx返回int"的数量。
因此,如果在我的avltree.h中包含stdio