据我所了解,#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
都是预处理指令。(只包含 #
的行也是预处理指令,但不起作用。)
#define blah 8
是一条预处理指令,它不是宏定义。 blah
才是宏。 这条 #define
预处理指令将名为 blah
的宏定义为一个对象式宏,其被替换成标记 8
。
#include
,#if
等是预处理器的功能。
#define blah 8
#define blah
是一个预处理器指令,声明一个名为blah的新宏。
#define
语句的结果。预处理器:执行预处理(包括文件包含、宏展开、条件编译)的程序。
宏:由#define
预处理指令定义的单词,其会被求值为某个其他表达式。
预处理指令:由预处理器识别出来的特殊#-关键字。
预处理器会在把源文件交给编译器之前修改源文件。
可以把预处理器看作是在编译器运行之前执行的程序。
预处理指令就像是预处理器程序的命令。C语言中一些常见的预处理指令有:
#include <头文件名>
- 指示预处理器将给定文件的文本粘贴到当前文件中。#if <值>
- 检查该值是否为真,如果是,则将代码包含在#endif
之前。#define
- 用于定义常量和创建宏宏是一些代码片段的名称。因此,无论在何处使用该名称,预处理器程序都会用代码片段来替换它。
例如:
#define BUFFER_SIZE 100
在您的代码中,无论何处使用BUFFER_SIZE,它都会被替换为100
int a=BUFFER_SIZE;
这里a变成了100
C语言中还有许多预定义的宏,例如__DATE__
、__TIME__
等。