Ali*_*Man -2 c putchar getchar c-preprocessor
根据我对 C 中宏的理解,它们是预定义的常量,将在整个程序中使用它们的常量值,所以我们继续定义它们以避免进一步的复杂性并使代码更具可读性,因此人们阅读它会明白什么应该保持不变,什么不是。
我在这里和那里读过(C 编程现代方法,KN King)我们可以将这两个函数定义为宏。
由于我对 C 有点陌生,我无法理解这两个如何定义为宏?
有两种类型的宏:简单替换宏和类函数宏。
替换宏将符号的一个实例替换为另一个。例如:
#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)
在的情况下getchar和putchar,它们可以被定义如下:
#define getchar() getc(stdin)
#define putchar(c) putc(c, stdout)
Run Code Online (Sandbox Code Playgroud)