为什么.cpp 文件可以在 xterm 上运行,而 .c 或 .cc 文件却不能?

为什么.cpp 文件可以在 xterm 上运行,而 .c 或 .cc 文件却不能?

我在 codeblocks 上编写了一段代码,对其进行了编译,并创建了一个可执行文件,但并未运行。xterm 显示权限被拒绝。但当我使用 .cpp 扩展名保存该程序时,它运行良好并创建了一个扩展名为 *.o 的文件。有人能解释一下为什么会发生这种情况以及什么是 c 预处理器吗?提前致谢。 权限被拒绝显示

答案1

底层编译器(通常gcc)使用文件扩展名来确定文件包含什么类型的代码以及如何编译它(尽管可以使用选项覆盖这一点-x)。

在这种情况下,您似乎已使用 filename 保存了看似 C 代码的内容untitled,但编译器不知道如何处理它。事实上,CodeBlocks IDE 似乎也不知道如何处理它,因此默认尝试将其作为 shell 脚本执行。

当您为文件添加.cpp扩展名时,IDE 和编译器会将其视为 C++ 代码,并且文件会被成功编译。

请注意,.o文件是目标代码文件,而不是可执行程序:这本质上是编译建筑

相关内容