为什么当我尝试通过为程序命名的文件来编译我的C程序时,它为它创建了一个应用程序?

Obi*_*wue -8 c gcc

我曾经尝试编写一个我为国际象棋游戏制作的C程序(感谢YouTube的Bluefever软件的教程),但是当我去编译程序时,我执行了这行代码:

C:\TDM-GCC-64\>gcc Chess/chess.c Chess/init.c -o chess
Run Code Online (Sandbox Code Playgroud)

编译工作(没有语法错误或任何东西),但当我到达我的文件目录时,我看到了这个(用蓝色圈出):

意外的应用程序(但没有病毒!):

在此输入图像描述

这怎么发生的?它可能与我正在编译的线路有关,但这背后的"英特尔"是什么?

chq*_*lie 5

编译器生成应用程序是正常的!

令人惊讶的是可执行文件的位置,应该在父目录中生成:

 C:\TDM-GCC-64\> gcc Chess/chess.c Chess/init.c -o chess
Run Code Online (Sandbox Code Playgroud)

解释很有意思:

  • 您正在使用Windows操作系统,其中文件名不区分大小写.
  • 您指示gcc生成可执行文件chess,但这是Chess目录的名称.在这种情况下,gcc在命名目录中生成可执行文件,并为其指定一个名称,该名称是第一个源文件的基本名称chess.c- > chess.
  • 此外,应用程序名称确实chess.exe在Windows中,但文件管理器的默认设置是不显示文件扩展名.这是一个非常不幸的选择.我建议您在Windows /文件资源管理器选项窗口中更改此设置以始终显示文件扩展名.这将允许你区分chess.c,chess.exechess.h更容易.

你有一个Makefile在Chess目录中,你应该使用该make命令来构建可执行文件:

 C:\TDM-GCC-64\> make -C Chess
Run Code Online (Sandbox Code Playgroud)

或者只是cdChess子目录并输入:

 C:\TDM-GCC-64\Chess> make
Run Code Online (Sandbox Code Playgroud)