
1、预处理
在这一阶段,源码中的所有预处理语句得到处理,例如:#include语句所包含的文件内容替换掉语句本身,所有已定义的宏被展开。
根据#ifdef,#if等语句的条件是否成立取舍相应的部分,预处理之后源码中不再包含任何预处理语句。
GCC预处理阶段可以生成i的文件,通过选项-E可以使编译器在预处理结束时就停止编译。例如:gcc -E -o helloi helloc
2、编译
这一阶段,编译器对源码进行词法分析、语法分析、优化等 *** 作,最后生成汇编代码。这是整个过程中最重要的一步,因此也常把整个过程称为编译。
可以通过选项-S使GCC在进行完编译后停止,生成s的汇编程序。例如:gcc -S -o hellos helloc
3、汇编
这一阶段使用汇编器对汇编代码进行处理,生成机器语言代码,保存在后缀为o的目标文件中。
当程序由多个代码文件构成时,每个文件都要先完成汇编工作,生成o目标文件后,才能进入下一步的链接工作。
目标文件已经是最终程序的某一部分了,只是在链接之前还不能执行。可以通过-c选项生成目标文件:gcc -c -o helloo helloc
4、链接
经过汇编以后的机器代码还不能直接运行。为了使 *** 作系统能够正确加载可执行文件,文件中必须包含固定格式的信息头,还必须与系统提供的启动代码链接起来才能正常运行,这些工作都是由链接器来完成的。gcc -o hello helloc
5、运行:执行EXE文件,得到运行结果。
#include <stdioh>
#include <stringh>
int letter,number,blank,other;
void count(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
else if(str[i]>='0'&&str[i]<='9')
number++;
else if(str[i]==' ')
blank++;
else
other++;
}
}
int main()
{
char a[80];
gets(a);
puts(a);
strcat(a,"\0");
letter=0;
number=0;
blank=0;
other=0;
count(a);
printf("\n%5d,%5d,%5d,%5d\n",letter,number,blank,other);
return 0;
}
扩展资料:
C语言需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成。
2、每个源文件可由一个或多个函数组成。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。
4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。
6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料:
百度百科-c语言
粗略的角度来讲
A、B都是正确的,
因为,A:main()可以在库函数后面
可以在自定义函数的后面、
可以在自定义函数的前面
B: 的确,系统调用的库函数必须要在main()的前面
准确的来说:A、B都不是很正确,都存在描述性错误、
因为:
首先,main()的位置不是任意的,必须遵守C语言书写的一些基本规范
例如: int a=1;
printf("helle world");
main()
{
printf("%d",a);
}
这样的main()位置就不对
其次,系统调用的库函数必须写在程序的开头
例如:
#include “stdioh”
main()
{
printf("hello world!")
}
最后,main()的位置变化对程序的影响
例如, #include “stdioh”
int a=1;
printf("helle world");
main()
{int b=2;<br/> a=b;<br/> printf("%d",a);<br/> }
与下面的程序是不一样的程序
#include “stdioh”
main()
{int a=1;<br/> printf("helle world");<br/> printf("%d",a);<br/> }
在第一个例子中a=1,是一个全局变量
在第二个例子中,a=1是一个局部变量
导致最后两个程序输出的结果也不一样
回答结束
最后,你问的问题是不是有点简单,有点片面了,该好好学习啊
有空多交流啊
不对。
应该是C 任意位置,main是入口,不规定位置。main函数,又称主函数,是程序执行的起点,main是相对来说的。如同音学理论之主调于泛音,泛音即程序中的除main之外的其他函数,根据人们的思考方式而生成的而非必定的模式,有主有次,既可将程序模块化又实现了一个闭合的整体。
在C语言当中,一个程序,无论复杂或简单,总体上都是一个“函数”;这个函数就称为“main() 函数”,也就是“主函数”。
main函数在程序中大多数是必须存在的,但是依然有例外情况,比如windows编程中可以编写一个动态链接库dll模块,这是其他windows程序可以使用的代码。由于DLL模块不是独立的程序,因此不需要main函数。
以上就是关于C语言源程序到运行程序经过哪几个步骤全部的内容,包括:C语言源程序到运行程序经过哪几个步骤、编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数。、C语言规定:在一个源程序中,main()函数的位置在等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)