Dev-C++ 手動更新編譯器至 G++ 8.2.0

這個筆記做一下記錄,我在 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 了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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 的 filesystemcharconv 在 Windows 是無法得到原生支援的

只有 Unix 的相關成員才能做得到(E.g. Mac / Linux)

所以前面 bits/stdc++.h include 進來以前先把 filesystemcharconv Define 掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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 的關係吧!


Dev-C++ 手動更新編譯器至 G++ 8.2.0
https://blog.yangjerry.tw/2019/11/30/devcplusplus-gplusplus-8/
作者
Jerry Yang
發布於
2019年11月30日
許可協議