SCPP 程式語言
常見程式設計概念
理解所有權
用 struct 與 class 組織相關資料
安全邊界與
[[scpp::unsafe]]套件、模組與專案版面配置
- 套件與專案清單
- 用模組控制作用域與可見性
- 在模組樹中參照項目的路徑
- 使用
import與限定名稱 - 把模組拆到不同檔案中
陣列、緩衝區與視圖
- 固定大小陣列
- 把文字當成
char與 C 相容緩衝區處理 - 用
std::span借用視圖
錯誤處理
- 不可恢復錯誤與編譯器插入的檢查
- 目前可用的可恢復錯誤寫法
- 為
std::expected做準備
泛型程式碼、concept 與生命週期
- 泛型資料型別
- 用 concept 描述共享需求
- 用生命週期驗證參照
撰寫自動化測試
- 編譯並執行式測試
- 控制測試命令
- 測試組織方式
一個 I/O 專案:打造命令列程式
- 接收命令列參數
- 讀取檔案
- 重構成模組
- 用測試增加功能
- 處理環境變數
- 把診斷訊息寫到標準錯誤
閉包與顯式迭代
- 閉包
- 用迴圈和視圖處理一串資料
- 繼續改進命令列專案
- 顯式迴圈的效能
進一步理解 project build 與可重用套件
- 編譯器模式與專案建置模式
- 建構可重用的模組產物
- workspace
- 安裝與執行二進位程式
- 擴充工具鏈
智慧指標與擁有型句柄
- 使用
std::unique_ptr<T> - 像用參照一樣使用擁有型指標
- 用解構函式執行清理程式碼
std::shared_ptr<T>- 用
mutable做內部可變性 - 避免參照環與所有權混亂
- 使用
無畏並行
- 用執行緒同時執行程式碼
- 安全地跨執行緒移動資料
- 共享狀態並行
- 執行緒 trait:
thread_movable與thread_shareable
互通性與固定版面配置資料
- 固定版面配置的
struct值 - C ABI 邊界
- packed 版面配置與
union逃生艙
- 固定版面配置的
進階特性
- 進階 concept 與約束
- 進階型別與函式指標
- 進階函式與閉包
- 沒有巨集時如何做中繼程式設計
最終專案:打造一個多執行緒 Web 伺服器
- 先做單執行緒 Web 伺服器
- 從單執行緒走向多執行緒
- 優雅關閉與清理
附錄
- A - Attribute 與保留寫法
- B - 運算子與符號
- C - 標準函式庫基礎元件
- D - 常用開發工具
- E - SCPP26 與 C++26 基線
- F - 本書翻譯版本