首页 > 试题广场 >

下列叙述中,错误的是:

[单选题]

下列叙述中,错误的是:

  • 计算机不能直接执行C语言编写的源程序。

  • C程序经编译后,生成的扩展名为.obj的文件是一个二进制文件。

  • 扩展名为.obj的文件,经链接程序生成扩展名为.exe的文件是一个二进制文件。

  • 扩展名为.obj和.exe的二进制文件都可以直接运行。

答案D:
.exe文件可直接运行,.obj文件不能运行。

因为.exe属于可执行文件,.obj文件只是源代码生成可执行文件的过程中生成的过程文件。

在计算机DOS下,生成一个可执行文件,需要用编译器将源程序编译为obj文件,再用链接器将obj文件链接成exe文件。只有可执行文件才能直接运行。可执行文件还包括.sys文件 .com等类型文件。

发表于 2022-02-21 16:10:25 回复(0)

预处理 =>  编译  =>  汇编  =>      链接

.c    ->        .i        ->        .s        ->        .o        ->        可执行文件

发表于 2023-09-16 18:10:30 回复(0)
这里的B选项不严谨,准确来说编译生成的是.s的文件,并不是我们的obj文件,因为我们的编译器是会先把.c 文件经过预处理先生成.i文件,再对.i文件进行编译翻译成我们的汇编代码生成.s文件,之后才是经过汇编翻译成我们的.obj/.o这样的目标文件,但是目标文件是不能够执行的,还需要通过链接,找到对应的动态库啊或者静态库这样的,为的是找到你调用的函数的定义。
这里的不严谨取决你的编译器是直接将C语言翻译成二进制指令,还是要先把C转换成汇编,再由汇编变成二进制如果是前者,就是对的,后者就是错的。其实一般就是转为汇编,毕竟我们先有汇编变成二进制的编译器啊,站在巨人的肩膀上嘛!而且C语言和汇编还相似,所以我才会说这里不严谨,毕竟计算机这门学科应该是发展性,继承性的学科,而不是我发明了个新的东西,要重新开始写所有的东西
编辑于 2023-11-22 16:17:05 回复(0)