有时我会看到一个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
预处理器定义的常量?
答案 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文件的顶部,以确保它只包含一次,因此您不会获得多个定义。