一、問題描述
最近在編譯一個依賴於ICU庫的項目時,出現了錯誤:
/usr/include/unicode/umachine.h:347:13: error: ‘char16_t’ does not name a type
typedef char16_t UChar;
二、解決辦法
原因是編譯器默認的C/C++標準是C98/C++98,那時候還沒有char16_t這種類型,故出現了編譯錯誤。因此需要給編譯器指定C++的版本,把標準設置到C11/C++11,這樣編譯就可以編譯過了。
若使用cmake,在CMakeLists.txt的project()之前加入這一行:
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 11)
其他如何設置標準可自行查找。