我正在学习C并希望有人能解释使用#ifndef
的逻辑是什么?
我也找到了很多我看过的C程序,人们似乎遵循#ifndef
,#define
和#endif
之后使用文件名的约定。关于如何选择这个名称有什么规则或提示吗?
#ifndef BITSTREAM_H
#define BITSTREAM_H
#include <stdio.h>
#include <stdint.h>
/*Some functions*/
#endif
答案 0 :(得分:5)
头文件通常会使用这样的逻辑来避免被包含在内 不止一次。源文件第一次包含它们,名称 没有定义,所以它被定义,其他的事情都完成了。 随后的时间,名称已定义,因此所有内容都被跳过。
答案 1 :(得分:2)
您发布的内容特别称为Include Guard。
答案 2 :(得分:1)
您正在寻找的术语是预处理器指令。
#ifndef
不需要后跟文件名,例如,#ifdef WINDOWS
或#ifndef WINDOWS
等常见。
答案 3 :(得分:0)
#ifndef
表示“如果未定义”。它通常用于避免文件的多个include
。
答案 4 :(得分:-1)
Tom Zych:“头文件通常会使用这样的逻辑来避免被多次包含。”
这是正确的,但实际上只需要“公共”标题,例如库函数的标题,您无法控制标题的包含方式。
对于您可以控制事物包含方式的项目中使用的标头,这个技巧是不必要的。 (如果在公共标题之外使用它们,则不常见)。
如果您避免在“私有”标头中使用它们,则更有可能以不太随意的方式包含标题。