【发布时间】:2012-01-18 18:05:40
【问题描述】:
大家好,我想问一个关于在 C 编程中包含 guards 的问题。我知道他们的目的,但在一些程序中我看到了一个 1" 在#define 之后这样写:
#ifndef MYFILE_H
#define MYFILE_H 1
这个1的目的是什么?有必要吗?
【问题讨论】:
大家好,我想问一个关于在 C 编程中包含 guards 的问题。我知道他们的目的,但在一些程序中我看到了一个 1" 在#define 之后这样写:
#ifndef MYFILE_H
#define MYFILE_H 1
这个1的目的是什么?有必要吗?
【问题讨论】:
没必要,#define MYFILE_H 应该可以解决问题。 MYFILE_H 已定义(ifndef 测试的条件)这一事实与其值分开。可以是 0、''、42 等。
【讨论】:
如果MYFILE_H 宏未在您的代码中的其他地方使用,则没有必要。
如果在其他地方使用 #ifdef 或 #ifndef 指令,如下所示:
#ifdef MYFILE_H
那么在宏定义中就不需要1-
但如果它在其他地方使用 #if 指令,如下所示:
#if MYFILE_H
那么在宏定义中需要1(或任何值!= 0)。
请注意,这些指令可以在源文件中用于验证是否包含标头。
【讨论】:
1 定义的,则可以使用#ifdef 或#if 指令进行检查,否则只能使用#ifdef 指令进行检查。
据我所知,这是一种风格。在我看来,“1”是不必要的;它并没有真正做任何事情。
【讨论】: