在未定义值时定义预处理器值

时间:2014-03-26 19:18:18

标签: c c-preprocessor

有时我会看到一个define预处理器,但没有分配给它的值。例如:

#define VAR

未指定值时分配给VAR的内容是什么?

我也在阅读文字,我看到了:

#ifndef ERROR_FUNCTIONS_H
#define ERROR_FUNCTIONS_H

/* Error diagnostic routines */

void errMsg(const char *format, ...);

#ifdef __GNUC__

    /* This macro stops 'gcc -Wall' complaining that "control reaches
       end of non-void function" if we use the following functions to
       terminate main() or some other non-void function. */

#define NORETURN __attribute__ ((__noreturn__))
#else
#define NORETURN
#endif                  

ERROR_FUNCTIONS_H是头文件吗?或者这只是define预处理器定义的常量?

1 个答案:

答案 0 :(得分:3)

它只是'已定义',因此您可以执行#ifdef ERROR_FUNCTIONS_H

等检查

所以,如果你有

 #define ERROR_FUNCTIONS_H

您稍后可以:

#ifdef ERROR_FUNCTIONS_H
 //do something
#endif 

将编译#ifdef中的代码。

ERROR_FUNCTIONS_H不是头文件。它只是#define预处理器的使用。

你的例子中有什么:

#ifndef ERROR_FUNCTIONS_H
#define ERROR_FUNCTIONS_H

通常放在.h文件的顶部,以确保它只包含一次,因此您不会获得多个定义。

相关问题