[英]Weird issues with Clang and C++, and uniform initialization
我試圖編譯並運行此頁面上的示例,該示例探索 function 指針作為 function 輸入。 我正在運行的示例是頁面中間的 66 行第一行。
https://www.learncpp.com/cpp-tutorial/function-pointers/
我在 Mac iOS 12.3.1 上。 我試着編譯
g++ sort.cc
並且出現錯誤,我的 for 循環中沒有分號,我相信是由於整個代碼中的括號初始化。 當我運行它時:
g++ -std=c++11 sort.cc
它工作正常。
但
我的 clang 不應該至少編譯 C++11 嗎? 跑步
clang -v
我明白了
Apple clang version 13.1.6 (clang-1316.0.21.2)
Target: x86_64-apple-darwin21.4.0
據我所知,clang 版本超過 4 默認為 c++14。
此外,當我使用 clang 或 gcc 運行時,我收到錯誤設置 -std=c++xx,但它適用於 g++。但據我所知,g++ 和 gcc 是 88150839870888 和 88150839870888 的別名g++ -v 給我 clang 版本 13.1.6。
發生什么了?
Xcode clang 默認為 C++98。 編譯一個具有 C++11 或更高版本功能的簡單程序會告訴您 C++11 或更高版本不是默認值。 例如,
// a.cpp
constexpr int i = 10;
clang a.cpp -c
a.cpp:1:1: error: unknown type name 'constexpr'
constexpr int i = 10;
^
1 error generated.
而clang a.cpp -c -std=c++11
工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.