MinGW区域设置库编译警告问题求助(VS Code/Sublime均出现)
解决MinGW编译时
#pragma system_header ignored outside include file警告问题 嘿,我之前也碰到过这个糟心的问题,折腾了好一会儿才捋明白,给你几个亲测有效的解决方向:
1. 确认MinGW路径配置是否正确
首先得保证VS Code/Sublime里的编译器路径指向完整的MinGW环境,别只指向bin文件夹。比如你的MinGW安装在C:\MinGW,那编译器路径应该是C:\MinGW\bin\g++.exe,同时一定要把C:\MinGW\bin添加到系统环境变量的PATH里——不然编译器可能找不到正确的系统头文件路径,才会把系统头文件当成用户代码来处理。
2. 给编译命令添加系统头文件标记
手动告诉编译器哪些路径下的文件是系统头文件,这样它就不会触发这个警告了。在编译参数里加上-isystem选项,指定MinGW的C++标准库头文件路径。
举个VS Code的tasks.json配置例子,你可以参考修改:
"command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", "-isystem", "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include\\c++", "-isystem", "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include\\c++\\mingw32" ]
3. 升级你的MinGW版本
你用的6.3.0版本确实有点老了,后续的MinGW版本已经修复了不少头文件里的这类小问题。要么去官网更个新,要么直接换成MinGW-w64(功能更全,对现代C++支持更好),换完之后大概率这个警告就自动消失了。
4. 检查代码里的头文件引用
别在自己的代码里直接引用MinGW内部的底层头文件,比如locale.h这类,应该用标准的C++头文件<clocale>或者<locale>。直接引用内部头文件很容易让编译器混淆文件类型,触发不必要的警告。
内容的提问来源于stack exchange,提问作者Beginner
相关产品推荐
相关产品推荐

