簡體   English   中英

Clang 和 C++ 的奇怪問題,以及統一初始化

[英]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工作正常。

另見: https://trac.macports.org/wiki/CompilerSelection

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM