据我了解,#define blah 8
是一个宏。而 ,#
是预处理器指令。
我们可以说#include、#if、#ifdef 等吗?也是宏,还是它们被称为别的东西?还是宏只是用于#define 语句的术语?
如果我错了,请纠正我。
据我了解,#define blah 8
是一个宏。而 ,#
是预处理器指令。
我们可以说#include、#if、#ifdef 等吗?也是宏,还是它们被称为别的东西?还是宏只是用于#define 语句的术语?
如果我错了,请纠正我。
以 开头的行#
是预处理指令。它们是告诉预处理器做某事的指令。
#include
, #if
, #ifdef
, #ifndef
, #else
, #elif
, #endif
, #define
, #undef
, #line
, #error
, 和#pragma
都是预处理指令。(包含 only 的行#
也是预处理指令,但没有效果。)
#define blah 8
是预处理指令,它不是宏。 blah
是一个宏。该#define
预处理指令将宏定义blah
为由 token 替换的类对象宏8
。
#include
, #if
, 等是预处理器的特性。
#define blah 8
是一个预处理器指令,并声明了一个名为blah的新宏。
#define
语句的结果。Preporcessor:进行预处理(文件包含、宏扩展、条件编译)的程序。
宏:由#define
预处理器指令定义的词,其计算结果为其他表达式。
预处理器指令:一个特殊的#-keyword,被预处理器识别。
预处理器在将源文件交给编译器之前对其进行修改。
将预处理器视为在编译器之前运行的程序。
预处理器指令类似于预处理器程序的命令。C 中一些常见的预处理器指令是
#include <header name>
- 指示预处理器将给定文件的文本粘贴到当前文件。#if <value>
- 检查值是否为真,如果是,它将包含代码,直到#endif
#define
- 用于定义常量和创建宏宏是某些代码片段的名称。因此,无论在何处使用该名称,它都会被预处理程序的代码片段替换。
例如:
#define BUFFER_SIZE 100
在您的代码中,无论您使用 BUFFER_SIZE ,它都会被 100
int a=BUFFER_SIZE;
a
替换为 100
C中还有许多预定义的宏,例如__DATE__
,__TIME__
等等。