本文作为记录一下“强迫”自己遵循C++20标准学习过程,也权当供后人不要踩我踩过的坑。
先贴代码,一个很简单的Hello World
#if __INTELLISENSE__
#include <iostream>
#else
import <iostream>;
#endifint main()
{std::cout << "Hello, World!" << std::endl;return 0;
}
截至本文发布,GCC版本12.1.0对C++20模块的支持比不上MSVC2022,模块需要自己先编译出来才能import,否则只能用回include。编译命令可以写成这样:
g++ -std=c++20 -fmodules-ts -x c++-system-header iostream
g++ -std=c++20 -fmodules-ts helloworld.cpp -o helloworld
第一步会在%目录%\gcm.cache\d-\mingw\include\c++\12.2.0下生成iostream.gcm,以供下一步使用。其中-std=c++20参数是告诉编译器开启C++20标准支持,-fmodules-ts开启C++20标准的模块支持。
至于VSCode代码检查智能高亮这个,需要修改.vscode目录下的c_cpp_properties.json
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "D:\\MinGW\\bin\\g++.exe","cStandard": "c17","cppStandard": "c++23","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}
"cppStandard"需要是"c++20"或"c++23"
#if __INTELLISENSE__ //让IntelliSense支持C++20模块
#include <iostream>
#else
import <iostream>;
#endif
上面的写法只是为了VSCode不提示错误,其实只写import <iostream>;编译就能通过。