据我了解,#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__等等。