1、#include <stdio.h>
---------------------------------------------------------------------------------
可以这么理解,标准输入输出函数同样是人们定义的,保存在标准函数库中的一些函数,
当我们使用这些已经定义过了的函数时,(编译系统)要求我们在完成编译前,对这些函数进行一种导入
编译系统是把源程序.c文件翻译成二进制的目标程序.obj文件,然后再把中间文件和库函数中的其他一些文件连接,执行,这才形成可以执行的文件.exe
在编译的时候,仅仅是语法让我们必须使用已被定义过的函数,当语法通过,就把当前的源程序(包括导入的函数名)翻译成二进制文件,通过函数名查找到对应的库函数(可能也是二进制文件)然后进行执行。
什么又是执行?计算机内部只能执行二进制文件,执行系统更像是一种把源程序的二进制文件和库函数的二进制文件翻译成计算机可以运行的.exe文件的系统,这个执行系统因为调用了库函数的二进制文件,所以可以接受用户输入和打印等操作,我们进行操作的时候,传递了二进制数据进去,与连接过类库的二进制文件比较,如果当前用户的操作需要二进制源码进行处理,就对我们传进去的二进制操作进行二进制源码处理,处理之后就依然以二进制的形式反馈到用户界面等地方,我们在做的就是
---------------------------------------------------------------------------------
编辑源码->编译系统检测通过->连接库函数,本质上就是对数据进行操作的司令部->执行,调用库函数或者自身的方法把二进制码转换成如用户界面上可执行的exe文件->如果我们输入数据或者进行操作的时候,exe文件把我们的操作转换成二进制在操作,这个操作如果被司令部函数收到了->司令部进行操作,然后继续调用库或自身函数,把二进制文件显示成用户可看到的文件。
---------------------------------------------------------------------------------
为什么linux不支持exe文件直接打开?
首先:什么是操作系统?
操作系统是管理和控制硬件和软件资源的最基本的用户软件,位于硬件和应用软件之间,同时提供硬件和软件的接口。二进制码之所以能转换成exe文件就是操作系统的功劳,
操作系统提供了一系列的软件接口,我们通过实现重写调用这些软件接口或方法进行软件开发,当然我们用一款操作系统提供的接口制作的软件是无法在另一个平台上运行的,因为它们使用的类库和接口都不同。
操作系统把我们的软件先进行了编译,编译成功之后和操作系统中提供的类库连接形成二进制码,在运行的时候调用库函数/自身方法把二进制码转换为该操作系统上的可执行文件。大家操作系统不同,软件就无所谓兼容问题了。。真的么?
备注:软件(计算机语言编写)-》操作系统编译-》二进制码+类库-》操作系统运行-》用户界面+功能。这么来说C编程软件中的编译器和执行器岂不是一个小型操作系统?
----------------------------------------------------------------------------------
java的跨平台是怎么回事
java的编译器都相同,不同操作系统上的执行器不同,编译出来的二进制码都能用,但要在不同操作系统上运行还需要不同的解释器,分别调用各自的类库。
----------------------------------------------------------------------------------
附上:
C语言32个关键字
关键字就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等
由ANSI标准定义的C语言关键字共32个:
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。