位元詩人 [C++] 程式設計教學:在 Windows 上寫 C++ 程式

C++開發環境
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

在 Windows 下寫 C++ 程式,主要有以下三種方案:

  • Visual C++ (MSVC)
  • MinGW + MSYS
  • Cygwin

這三種方案各有優缺點,本文將逐一說明。

Visual C++ 系統

編譯器

微軟對 C++ 的態度還算積極,Visual C++ 有跟上 (一部分的) C++14、C++17、C++20 標準 (詳見這裡)。所以 Visual C++ 可以用來學習 C++。

編輯器

早期 Visual C++ 是獨立的軟體,近幾年來則和其他的語言整合進 Visual Studio 裡面,現在的 Visual Studio 採用不同的專案來區隔不同語言和形式的程式。

由於早期微軟提供的 Visual Studio Express 版的功能相對受限,有一陣子 Dev-C++ 在台灣的大專院校中大行其道,但近年的 Visual Studio Community 版功能已經相當完整;相較起來,Dev-C++ 久未更新,現在應該不用再刻意使用 Dev-C++ 了 (詳見這裡)。

套件管理

原本 Windows 上缺乏良好的 C 或 C++ 第三方函式庫 (或套件) 管理的程式,近年來出現一些套件管理程式,像是 Conanvcpkg 等,這個問題有改善一些。雖然目前的 vcpkg 不能自訂編譯參數,靈活性相對不足,一般情境下也夠用了。

GCC 系統

編譯器

MinGW 是移植自 GCC 這套在 GNU/Linux 等類 Unix 系統上知名的編譯器,但類 Unix 上的函式庫專案在 Windows 上會水土不服,所以加入 MSYS 這個小型 POSIX 模擬環境,用來安裝一些函式庫。

原本的 MinGW + MSYS 不太親民,後來出現 MSYS2,該專案除了編譯器外,也引入一些開發工具和套件管理軟體等,建置環境的過程變得更簡單。如果讀者想安裝 MSYS2,可看這裡

編輯器

MinGW 沒有自帶的 IDE,讀者可自行搭配其他 IDE,常見的選項有 Code::Blocks、KDevelop、CLion (商業軟體) 等。對於 MinGW 來說,建置 C 和 C++ 開發環境是通用的。筆者在這裡撰寫 MinGW 搭配 Code::Blocks 的文章,對於 C 和 C++ 皆適用,此處不再重覆。

套件管理

原本的 MinGW 沒有套件管理的部分,而 MSYS2 將 Arch Linux 的 Pacman 引入,安裝套件就容易得多。

Cygwin 環境

Cygwin 則是一個微型的 POSIX 環境,主要的優點是可以在該環境內用類 Unix 系統上常見的終端機工具,也包括 GCC (詳見這裡)。

但在 Cygwin 下編譯出來的程式,需額外帶一個 Cygwin 提供的動態函式庫 (DLL),也有軟體授權上的議題。除了要使用 POSIX 相關工具或 API 外,不建議用 Cygwin 來學習 C++。

安裝 Visual Studio 2022 並加入 C++ 的支援

Visual Studio 官網下載 Visual Studio Community 2022 的安裝程式即可。

如果不需要 IDE,只要編譯器和開發工具,可以到這個頁面下載 Build Tools for Visual Studio 2022。在持續整合等沒有 GUI 的環境,都是用這種工具提供的 Visual C++ 來編譯 C++ 程式碼。

在安裝程式中,記得要選「使用 C++ 的桌面開發」工作負載。參考以下截圖:

除了標準的工具外,筆者還選了 Clang。這是另一個知名的 C++ 編譯器,筆者只是抱著試用一下的心態去選。除了這個工作負載外,還可以視需求安裝其他的工作負載。這部分由讀者自行選擇。

用 Visual Studio 2022 建立 C++ 專案

在 Visual Studio 的起始畫面選擇「建立新的專案」:

在專案類型選擇「主控台應用程式」:

設置專案名稱:

進入 Visual Studio 的編輯器:

在編輯器內加入以下內容:

#include <iostream>

int main(void)
{
    std::cout << "Hello World" << std::endl;

    return 0;
}

現在的重點在熟悉開發工具,暫不說明語法。

關於作者

身為資訊領域碩士,位元詩人 (ByteBard) 認為開發應用程式的目的是為社會帶來價值。如果在這個過程中該軟體能成為永續經營的項目,那就是開發者和使用者雙贏的局面。

位元詩人喜歡用開源技術來解決各式各樣的問題,但必要時對專有技術也不排斥。閒暇之餘,位元詩人將所學寫成文章,放在這個網站上和大家分享。