這個筆記做一下記錄,我在 Windows 10 上的更新
很多人都知道 Dev-C++ 已經算是不更新的 IDE 了 但我在 Windows 寫 C / C++ 還是用 Dev-C++ 可是版本停留在 TDM-GCC 4.9.2(Windows 最新的版本為 G++ 8.2.0) 新版的標準想使用都不能用 我們直接來手動更新吧!
1. 安裝 MinGW#
進到 MinGW 官網 點入 Downloads
進入後請你找到 mingw-get-setup.exe 並下載

就開始 Install

選擇路徑,需要記得位置!

點下去就會開始安裝,安裝完畢後就開啟 MinGW Installation Manager

把 mingw32-base-bin 跟 mingw32-gcc-g++-bin 這兩個 Mark for Installation


然後就 Apply Changes

點下 Apply
安裝完畢後,進到你安裝的路徑

進入 bin 資料夾,複製路徑

編輯環境變數 Path

加入到環境變數 Path

確定後,打開「命令提示字元」輸入 g++ -v

如果顯示這些文字,就是安裝成功
2. Dev-C++ 加入 MinGW G++ 8.2.0#
打開 Dev-C++ 工具 $\rightarrow$ 編譯器選項

按到第三個 $+$

選擇你剛剛 MinGW 安裝的地方

成功的話,上方就會自己變更為 MinGW GCC 8.2.0

因為舊版 Dev-C++ 語言標準只有停留在 C++11,我們下方命令列手動加入 -std=c++17

按下確定後,就可以來測試 Sample Code 了
#include<iostream>
#include<tuple>
using namespace std;
std::tuple<char, int, bool> mytuple()
{
char a = 'a';
int i = 123;
bool b = true;
return std::make_tuple(a, i, b);
}
int main()
{
auto [a, i, b] = mytuple();
// Structured Bindings in C++17 is available.
// Using in C++14 will get warning.
cout << "Hello C++17 " << a << " " << i << " " << b << endl;
return 0;
}

3. 注意事項#
如果你是競賽選手,你應該知道 GNU 的編譯器有個 bits/stdc++.h 引入所有函式庫的黑魔法
但是直接使用會 Compile Error

個人爬了一下 Reddit 的 C++ 版
得知 C++17 的 filesystem 跟 charconv 在 Windows 是無法得到原生支援的
只有 Unix 的相關成員才能做得到(E.g. Mac / Linux)
所以前面 bits/stdc++.h include 進來以前先把 filesystem 跟 charconv Define 掉
#define _GLIBCXX_FILESYSTEM 1
#define _GLIBCXX_CHARCONV 1
#include<bits/stdc++.h>
using namespace std;
std::tuple<char, int, bool> mytuple()
{
char a = 'a';
int i = 123;
bool b = true;
return std::make_tuple(a, i, b);
}
int main()
{
auto [a, i, b] = mytuple();
// Structured Bindings in C++17 is available.
// Using in C++14 will get warning.
cout << "Hello C++17 " << a << " " << i << " " << b << endl;
return 0;
}
後記 Afterword#
我後來發現 Code::Blocks 用 C++17 的 bits/stdc++.h 也有同個問題。
果然真的沒有原生 Windows 支援(唯一希望應該是 MSVC++ 的編譯器)
我想這就是 MinGW 一直沒有讓 G++ 上去 9.2.0 的關係吧!