C语言,正确使用包括警卫

Ori*_*ber 3 c header include-guards include

我正在尝试创建一个头文件(包括我为AVL Trees编写的函数),但我有一个小问题和对包含警卫的语法的误解.

现在我的代码看起来像这样

#ifndef STDIO_H
#define STDIO_H
#endif
#ifndef STDLIB_H
#define STDLIB_H
#endif
#ifndef CONIO_H
#define CONIO_H
#endif
Run Code Online (Sandbox Code Playgroud)

问题是,我认为它只包括<stdio.h>.当我尝试使用malloc时,它表示malloc未定义,即使我包含了stdlib.

根据http://www.cprogramming.com/reference/preprocessor/ifndef.html,如果我理解正确,ifndef检查是否定义了令牌,如果它不是,它定义我在ifndef之后写的所有内容,直到#endif.所以我的代码应该工作.

是否定义了stdio?没有.所以定义它.万一.是stdlib定义的吗?没有.所以定义它.万一.是conio定义的吗?没有.所以定义它.万一.我没有看到问题.

如果我想添加这3个标题,那么正确的语法是什么?

Kla*_*äck 6

如果包含文件被多次包含,则包含防护用于防止双重定义.

标准包含文件具有必要的包含防护,因此您不需要包含防护装置.

你的代码应该是:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
Run Code Online (Sandbox Code Playgroud)