当其他编译器没有错误时,MinGW gcc给出错误
MinGW gcc gives errors when other compilers do not
在你问之前,是的,我确实查了好几天了。我完全卡住了……我使用MINGW32(我的快捷方式说MSYS)来编译我的c和cpp代码。大约两三天来,我一直有奇怪的错误。(下图)它之前工作得很好。我甚至运行了我之前编译的相同代码,它给出了相同的错误。然后我进入devc++并打开然后编译,它工作得很好。
错误:
namespace: command not found
语法错误:int main () {
(有时它给我一个大的不可读的混乱)
我真的卡住了…我不想切换到devc++…我喜欢使用自己的文本编辑器并在命令行中编译。
从你的错误namespace: command not found
和using: 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
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用 MINGW gcc 编译时,不会为 std::string 调用重载的新运算符
- Mingw-W64 GCC 无法识别来自 DXGiformat.h 的DXGI_FORMAT
- G++无法编译Win7,64位(MinGW.org GCC-6.3.0-1)
- MinGW GCC通配符编译所有文件(Windows)
- C++编译错误,std 中的互斥锁不会在 MinGW (GCC 6.3.0) 中命名类型
- C++ MinGW GCC CodeBlocks静态链接
- 我的代码在使用GCC-MinGW时不再编译
- 在 mingw 的 gcc-5.3 下具有混合位域和枚举递减的结构的意外大小
- 什么是GCC和MingW,它们与C 有何关系
- 使用GCC/Mingw创建代理DLL
- InterlockedOr8 on gcc MinGW
- GCC (MingW-w64) 找不到基构造函数 (!?)
- GCC/MINGW中'startup files'来源
- GCC(MinGW)链接器在尝试使用GetProcessImageFileName时失败
- rand_r不在作用域中,gcc-mingw在windows上的cygwin下
- 当文件有换行符时,ifstream::tellg在MSVC2012和gcc(mingw)上有所不同
- C++ GCC/MinGW 路径:ssp、ext、tr1;并行,扩展,位,实验
- 如何获取由 GCC-MINGW 编译的进程的最大内存使用量
- 用于检查编译器是gcc/mingw还是VC++cl的标志