Linux
簡單的 cpp 程序在標準 GNU/Linux 下執行,但不是 MacOS M1
我在 GNU/Linux (Debian) 下編寫一個簡單的程序已經有一段時間了,最近我想在新 M1 晶片上執行的 macOS 下嘗試一下。但是,g++ 拒絕執行它並引發很多錯誤。Debian下的g++完全沒有問題。AFAIK,所有依賴項都已滿足,所以我不明白為什麼它不會執行。
我的程式碼摘錄(兩種方法;還有更多,但這是我可以分享的):
#include <unistd.h> uint64_t constexpr mix(char m, uint64_t s) { return ((s << 7) + ~(s >> 3)) + ~m; } uint64_t constexpr hashIt(const char* m) { return (*m) ? mix(*m, hashIt(m + 1)) : 0; }
g++ 返回以下內容:
main2.cpp:3:19: error: expected ';' after top level declarator uint64_t constexpr mix(char m, uint64_t s) ^ ; 1 error generated.
它可以在 Debian 和任何其他發行版下完美執行。
感謝您的任何回答!
編輯:我執行
brew install gcc
並成功安裝了包。但是,它不在通常目錄中的任何位置 (/usr/local/bin, /usr/local/Cellar
.)
當通過 Homebrew 包管理器在 macOS 上安裝 GNU 編譯器集合 (GCC) 時
brew install gcc
,g++
執行檔將被呼叫g++-11
,其中11
將是一些與 GCC 最新版本相對應的數字。這是為了允許同時安裝多個版本的 GCC,例如通過
brew install gcc@9
安裝版本 9,並且還允許g++
在沒有編號的情況下保留 Apple 的別名clang++
。因此,在您的情況下,安裝
gcc
包並g++-11
用作您的 C++ 編譯clang++
器,macOS 上的編譯器不支持您的程式碼。