Q: printf是C语言关键字吗?
A: 我们用代码来测试一下.
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int printf;
return 0;
}
是可以编译通过的! 所以,printf一定不是关键字.
Q: 标准输入输出是一个很通用的概念,为什么printf不被设计成关键字呢?
A: printf有格式字符串,如果设计成关键字,那么格式字符串将被固定成编译器处理,如果想增加一种新格式,比如%y, 那么修改编译器将是很痛苦的事情,更新libc是更符合扩展的做法.
另外, 不同平台的输入输出处理不同, 语言标准定义目标, 无能力实作.
作者: 陈曦
环境: MacOS 10.14.5
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.6.0
转载请注明出处