#define <text> <substitute>
定义了一个宏。但是#define <text>
呢,就是这样呢?那是做什么的?例如,在标题保护的上下文中。
答案 0 :(得分:5)
它还定义了一个宏,无需替换。
例如在标题保护的上下文中。
在这种情况下,我们只需要知道是否已经定义了保护宏 - 我们可以使用#ifdef
或#ifndef
来检查。它不需要被定义为任何东西,因此我们通常不会为任何事情烦恼。这给出了通常的守卫形式
#ifndef HEADER_H // check whether it's defined, skip to "endif" if so
#define HEADER_H // define it; doesn't need to contain anything
// header contents
#endif // skip to here (end of header) if already defined
以便包含一次将包含内容并定义宏;包括它第二次将无害地跳过内容,而不是重复它们(可能)导致错误。
答案 1 :(得分:3)
这种类型的宏没有替代品。
#define FOO
当宏仅用于测试它是否存在时,它非常有用:
#ifdef FOO
或
#if defined(FOO)
答案 2 :(得分:2)
它将指定的标识符定义为 nothing 。就这么简单。
答案 3 :(得分:1)
它定义了一个空宏。当在代码中遇到该宏字时,它将被替换为任何内容。
这并非完全没用,因为仍然可以使用#ifdef
检测宏。它经常用于提供不同代码段的可选编译。
当用作包含保护(使用#ifndef
)时,它可以防止在单个源文件中多次处理标题。