getchar() 和 putchar() 宏如何?

Ali*_*Man -2 c putchar getchar c-preprocessor

根据我对 C 中宏的理解,它们是预定义的常量,将在整个程序中使用它们的常量值,所以我们继续定义它们以避免进一步的复杂性并使代码更具可读性,因此人们阅读它会明白什么应该保持不变,什么不是。

我在这里和那里读过(C 编程现代方法,KN King)我们可以将这两个函数定义为宏。

由于我对 C 有点陌生,我无法理解这两个如何定义为宏?

dbu*_*ush 5

有两种类型的宏:简单替换宏和类函数宏。

替换宏将符号的一个实例替换为另一个。例如:

#define LEN 10
char str[LEN];
Run Code Online (Sandbox Code Playgroud)

预处理后,变成:

char str[10];
Run Code Online (Sandbox Code Playgroud)

类似函数的宏可以采用可以插入到任何被替换的参数中的参数:

#define MAX(a,b) ((a) > (b) ? (a) : (b))
int x = MAX(2,3);
Run Code Online (Sandbox Code Playgroud)

预处理后:

int x = ((2) > (3) ? (2) : (3));
Run Code Online (Sandbox Code Playgroud)

在的情况下getcharputchar,它们可以被定义如下:

#define getchar() getc(stdin)
#define putchar(c) putc(c, stdout)
Run Code Online (Sandbox Code Playgroud)