![为什么.cpp 文件可以在 xterm 上运行,而 .c 或 .cc 文件却不能?](https://linux22.com/image/1053854/%E4%B8%BA%E4%BB%80%E4%B9%88.cpp%20%E6%96%87%E4%BB%B6%E5%8F%AF%E4%BB%A5%E5%9C%A8%20xterm%20%E4%B8%8A%E8%BF%90%E8%A1%8C%EF%BC%8C%E8%80%8C%20.c%20%E6%88%96%20.cc%20%E6%96%87%E4%BB%B6%E5%8D%B4%E4%B8%8D%E8%83%BD%EF%BC%9F.png)
我在 codeblocks 上编写了一段代码,对其进行了编译,并创建了一个可执行文件,但并未运行。xterm 显示权限被拒绝。但当我使用 .cpp 扩展名保存该程序时,它运行良好并创建了一个扩展名为 *.o 的文件。有人能解释一下为什么会发生这种情况以及什么是 c 预处理器吗?提前致谢。 权限被拒绝显示
答案1
底层编译器(通常gcc
)使用文件扩展名来确定文件包含什么类型的代码以及如何编译它(尽管可以使用选项覆盖这一点-x
)。
在这种情况下,您似乎已使用 filename 保存了看似 C 代码的内容untitled
,但编译器不知道如何处理它。事实上,CodeBlocks IDE 似乎也不知道如何处理它,因此默认尝试将其作为 shell 脚本执行。
当您为文件添加.cpp
扩展名时,IDE 和编译器会将其视为 C++ 代码,并且文件会被成功编译。
请注意,.o
文件是目标代码文件,而不是可执行程序:这本质上是编译和建筑。