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