我在 codeblocks 上编写了一段代码,对其进行了编译,并创建了一个可执行文件,但并未运行。xterm 显示权限被拒绝。但当我使用 .cpp 扩展名保存该程序时,它运行良好并创建了一个扩展名为 *.o 的文件。有人能解释一下为什么会发生这种情况以及什么是 c 预处理器吗?提前致谢。 权限被拒绝显示
答案1
底层编译器(通常gcc
)使用文件扩展名来确定文件包含什么类型的代码以及如何编译它(尽管可以使用选项覆盖这一点-x
)。
在这种情况下,您似乎已使用 filename 保存了看似 C 代码的内容untitled
,但编译器不知道如何处理它。事实上,CodeBlocks IDE 似乎也不知道如何处理它,因此默认尝试将其作为 shell 脚本执行。
当您为文件添加.cpp
扩展名时,IDE 和编译器会将其视为 C++ 代码,并且文件会被成功编译。
请注意,.o
文件是目标代码文件,而不是可执行程序:这本质上是编译和建筑。