- 论坛徽章:
- 0
|
比如在程序中 用getchar()这样一个宏;
在编译的时候用getch(stdin)这个函数替换了宏定义;
这和在程序中直接用getch(stdin)的过程不是一样吗?
这跟
- int getchar(){
- return getch(stdin);
- }
复制代码 这个实现相比,是少了一层函数调用啊。
putchar 和 getchar 是 C 标准,是必须实现的,也是为了方便,当然这样实现比较好了。
而且,putchar 和 getchar 很可能会有不同的实现,比如 winnt 中可能要实现 ansi 和 unicode 两个版本,win 和 linux 中的实现也有可能不同,这时我们就不能直接用 getc 。
下面是 win 的 stdio.h , 可以看出,它有两个版本的 putchar, 一个是函数调用的,一个是宏替换的。
- CONIO.H (80):_CRTIMP int __cdecl _putch(int);
- CONIO.H (103):_CRTIMP int __cdecl putch(int);
- STDIO.H (311):_CRTIMP int __cdecl fputc(int, FILE *);
- STDIO.H (312):_CRTIMP int __cdecl _fputchar(int);
- STDIO.H (330):_CRTIMP int __cdecl putc(int, FILE *);
- STDIO.H (331):_CRTIMP int __cdecl putchar(int);
- STDIO.H (427):#define putc(_c,_stream) (--(_stream)->_cnt >= 0 \
- STDIO.H (430):#define putchar(_c) putc((_c),stdout)
复制代码
[ 本帖最后由 VirusCamp 于 2006-8-11 19:47 编辑 ] |
|