通常偽亂數生成器(Pseudo Random Number Generator)會生成屬於 [0, 2^N)
區間的整數。此區間內每個整數被生成的機率均等。然而我們需要的亂數 …
-
-
一個 va_list 錯誤案例
最近幫別人除錯,看到一個有趣的案例。下面的程式會有 Segmentation Fault(記憶體區段錯誤),大家看得出問題嗎?
#include <stdarg.h> struct Context { char *error_; }; void report_error …
-
std::any 使用方法
本文要介紹 C++ 17 新增的
std::any
類別。它能儲存所有「可以被複製建構(Copy Constructible)」的數值。以下我們會先介紹std::any
的基本用法,接著介 … -
C++ 執行緒:promise、future、packaged_task 與 async 的使用方法
今天我想要介紹 C++ 執行緒的高階 API:
std::promise
、std::future
、std::packaged_task
與std::async
。本文的內容可以濃縮為下圖:其中
std::promise
與std::future
是執行緒之間 … -
C++ std::thread join() 與解構函式
前幾天在除錯的過程中,我注意到程式印出的 Stack Trace 和我的預期相去甚遠。在反覆研究之後,我發現一段有問題的程式碼。大 …
-
C 語言的「四捨六入五成雙」
最近在編寫單元測試的時候,我需要一個將浮點數「四捨六入五成雙」的函式。一開始我想:這很容易:只要把整數部分和小數 …
-
C++ 17 對例外處理規格的改動
今天我想要介紹 C++ 17 對「例外處理規格(Exception Specification)」的二個改動:
- 移除
throw (ClassName)
- 將
noexcept
納入型別系統(Type System)
移除 throw (ClassName) 例外處理規格
在 C++ 98 …
- 移除
-
C++ 17 fallthrough、nodiscard、maybe_unused 屬性
C++ 17 新增三個標準屬性(Attribute):
- [[fallthrough]] 用以標記接續執行下一個 switch case 的意圖。
- [[nodiscard]] 用以提醒函式呼叫者檢查回傳值。
- [[maybe_unused]] 用以標記可 …
-
C++ 17 template <auto> 非型別樣版參數型別推導
在 C++ 17 標準下,我們能以
auto
關鍵字宣告非型別樣版參數(Non-Type Template Argument)。編譯器會以「樣版的實際參數」推導「樣版參數」的型別:template <auto Arg …
-
C++ 17 __has_include 前置處理表達式
__has_include
是 C++ 17 加進前置處理器(Preprocessor)的新功能。我們能以__has_include
表達式偵測某個標頭檔(Header File)是否存在。如果前置處理器能找到指 …
Page 1 / 3 Next »