在gcc存在之前,是如何将c语言编译并运行的呢,文中说c语言之父写了Unix,可是又说后来才有的gcc编译器,是怎么回事呢
最早的c语言是纯汇编写的,最早的unix也是汇编写的,这是60年代到70年代的事情。gcc出来的时间就更晚了,基本上要到90年代才有。
也许你没有概念,c语言在70年代被看作一种"奢侈"的高级语言,实际上,就算dos、bill gates写的basic解释器、以及wps这样的应用软件都基本上是汇编直接写的。
mypow.c:定义mypow()函数
unsigned long long mypow(unsigned int x, unsigned int y)
{
unsigned long long res=1;
if (y==0)
res = 1;
else if (y==1):
res = x;
else
res = x * mypow(x, y-1);
return res;
}
powtest.c:调用mypow()函数
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
unsigned int x, y;
unsigned long long res;
if ((argc<3) || (sscanf(argv[1], "%u", &x)) != 1 || (sscanf(argv[2], "%u", &y)) != 1 )
{
printf("Usage:pow base exponent\n");
exit(1);
}
res = mypow(x, y);
printf("%u ^ %u = %u\n", x, y, res);
return 0;
}
用
gcc -o
命令编译
用
gcc
命令编译
要注意实验中给出的powtest.c文件里没有对mypow.c头文件进行引用,因此做实验的时候自己要加这个头文件如下图第四行
在没有gcc编译器的情况下,C语言也可以进行编译和运行。早期的C语言开发者通常会使用一些基本的工具链,将C代码翻译为汇编代码,再汇编为可执行代码。这样的工具链通常由以下几个组成部分:
这些工具通常是分别由不同的开发者开发的,而且使用方法并不统一。在这种情况下,开发者需要自己研究如何将它们组合在一起使用。这也是为什么后来出现了gcc编译器的原因。gcc提供了一个完整的工具链,包括了编辑器、编译器、汇编器和链接器,简化了工具链的使用,提高了开发效率。此外,gcc还支持许多高级语言和编译器特性,使得开发者可以更加高效地编写和调试代码。