当其他编译器没有错误时,MinGW gcc给出错误

MinGW gcc gives errors when other compilers do not

本文关键字:gcc MinGW 出错 错误 其他 编译器 有错误      更新时间:2023-10-16

在你问之前,是的,我确实查了好几天了。我完全卡住了……我使用MINGW32(我的快捷方式说MSYS)来编译我的c和cpp代码。大约两三天来,我一直有奇怪的错误。(下图)它之前工作得很好。我甚至运行了我之前编译的相同代码,它给出了相同的错误。然后我进入devc++并打开然后编译,它工作得很好。

错误:

namespace: command not found

语法错误:int main () {

(有时它给我一个大的不可读的混乱)

我真的卡住了…我不想切换到devc++…我喜欢使用自己的文本编辑器并在命令行中编译。

从你的错误namespace: command not foundusing: command not found告诉我,你没有用适当的编译器编译代码。

参考MinGW32工具链:

gcc.exe = C
g++.exe = C++

您可能会发现查看IDE对编译器的实际操作是很有用的。我目前的IDE允许我看到它运行的所有命令来构建我的项目:

C:/mingw32/bin/g++.exe  -c  "C:/MyProgram/main.cpp" -g -O0 -std=c++14 -Wall  -o ./Obj/main.cpp.o -I. -IDependencies/Something/include

让我们来看看这是做什么的

我当前的工具链是MinGW32,位于C:/mingw32/bin/g++.exe

g++是我们的c++编译器,所以我们调用g++.exe并传递以下开关:

-c "C:/MyProgramm/main.cpp"

告诉我的编译器从我的项目目录编译main.cpp。然后我的IDE添加了一些额外的命令行开关。为了回答这个问题,我只考虑-o。这告诉我们将代码main.cpp的输出文件转换为输出文件。

我们生成这样一个文件的原因是为了节省编译时间,这样我们就不必在不做任何更改的情况下编译同一个文件两次。我们在每个文件上执行此步骤,创建一个.o文件集合。

然后将新文件保存在"C:/MyProgramm/Obj/main.cpp.o"

这意味着你的命令行函数看起来像这样:

C:/mingw32/bin/g++.exe -c "<my project directory>/<file>.cpp" -o ./Obj/<file>.cpp.o

我建议你仔细阅读g++函数的文档,并从不同的IDE中学习,因为你很快就会发现你需要用编译器做更高级的事情。

例如,为了启用c++14中的特性,我添加了-std=c++14