我刚开始学习C语言,所以希望这不是一个愚蠢的问题。我遇到的问题与头文件和使用#define定义常量有关。我已经阅读过应该使用以下内容来防止我的头文件被编译多次。
#ifndef NAME_OF_FILE
#define NAME_OF_FILE
.
. //my header file content
.
#endif
我希望你能加入一个常量,我认为我也可以使用#define,比如说:
#ifndef NAME_OF_FILE
#define NAME_OF_FILE
#define NUM_CONST 5 //the constant I want in my header file
.
.
.
#endif
C语言是如何知道#define NAME_OF_FILE指的是.h文件,而#define NUM_CONST 5仅仅是一个常量?是因为NUM_CONST末尾的值吗?还是我完全理解错误了?
NAME_OF_FILE
是特殊的,它只是按照约定而已。它是文件的“锁”(即)文件可以被多次#include
,但锁防止编译器多次读取锁结构和相应的#endif
之间的内容。实际上是C预处理器完成这个过程。如果您逐步跟随逻辑,第一次#ifndef
为真,因此包括[1st]#define
和其余部分。在第二次尝试中,#ifndef
为假,并跳转到底部的#endif
。 - Craig Estey