在C中包含Guards语法

大家好我想问一个关于C编程中包含守卫的问题。我知道有目的但在某些代码中我看过#define之后写的“1”

#ifndef MYFILE_H #define MYFILE_H 1 

这个“1”的目的是什么? 有必要吗 ? 谢谢

如果MYFILE_H宏未在代码中的其他位置使用,则没有必要。

如果在其他地方使用#ifdef#ifndef指令,如下所示:

 #ifdef MYFILE_H 

然后在宏定义中不需要1

但如果它在其他地方使用#if指令,如下所示:

 #if MYFILE_H 

然后在宏定义中需要1 (或任何值!= 0 )。

请注意,可以在源文件中使用这些指令来validation是否包含标头。

没有必要, #define MYFILE_H应该这样做。 定义 MYFILE_H (由ifndef测试的条件)的事实与其值分开。 它可能是0,’,42等。

据我所知,这是一种风格的东西。 在我看来,“1”是不必要的; 它并没有真正做任何事情。