为什么c语言之父先用c语言写了Unix,之后才有人开发出了gcc编译器,在gcc之前是有更古早的专用不通用编译器之类的吗?求告知~
学过汇编语言吗,如果你在大学的课程里学过汇编语言,那应该会有亲手将汇编语言翻译成指令码的经历吧
编程语言只是方便我们写程序,它并不是天然的就能被翻译成可执行的二进制指令
gcc出现之前,这个过程基本是手动完成的(当然不会是纯手动,而是需要自己用多个外部工具去翻译)
而gcc能够将高级语言先翻译成汇编语言再翻译成指令码,一步到位,直接生成可执行文件
第一个gcc编译器肯定是 别的语言写的,然后再用这个编译器 进行迭代开发,用c语言重新编写一个gcc编译器,最终实现 程序自身的自举,也就是自己编译自己。
最早的c语言是纯汇编写的,最早的unix也是汇编写的,这是60年代到70年代的事情。gcc出来的时间就更晚了,基本上要到90年代才有。
也许你没有概念,c语言在70年代被看作一种"奢侈"的高级语言,实际上,就算dos、bill gates写的basic解释器、以及wps这样的应用软件都基本上是汇编直接写的。
#include<fun.h>
与#include"fun"
<>在库里找
“”在当前文件夹下与库里都找
当一个头文件不在当前文件夹下,而在其他路径时,可使用gcc -I 文件路径
如在1.c中加入#include<fun.h>
在1.c所在的文件夹下并没有fun.h这个文件,fun.h位于该文件夹下的fun文件夹中,可用gcc -I -o 2 1.c
在处理宏定义时也有一个注意的问题
#include<stdio.h>
#define ABC 10+8
int main()
{
printf("%d",ABC*5);
return 0;
}
#include<stdio.h>
#define ABC (10+8)
int main()
{
printf("%d",ABC*5);
return 0;
}
前者输出50,后者输出90
C语言之父先使用C语言编写Unix操作系统,然后才有其他人开发出了gcc编译器的原因在于,C语言是Unix操作系统中最适合的编程语言,具备高效、简单、可移植等优点,而Unix操作系统也需要一种高效、简单、可移植的编程语言来开发。在gcc出现之前,还有其他更古老的专用且不通用的编译器,如AT&T asm、PCC等。但这些编译器都存在缺点,如AT&T asm只能编译汇编语言,而PCC虽然能够编译C语言,但不如gcc稳定和强大。
解决方案:无
因为问题已经得到很好的回答了,这里无需提供额外的解决方案。