単純なcppプログラムは標準のGNU / Linuxでは実行されますが、MacOS M1では実行されません。

単純なcppプログラムは標準のGNU / Linuxでは実行されますが、MacOS M1では実行されません。

私はしばらくGNU / Linux(Debian)で簡単なプログラムを書いてきました。ただし、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.)にはありません。

答え1

Homebrewパッケージマネージャを使用してmacOSにGNU Compiler Collection(GCC)をインストールすると、実行可能ファイルが呼び出され、これにはbrew install gcc最新g++バージョンg++-1111GCCに対応する番号が含まれます。

brew install gcc@9これは、たとえばバージョン9をインストールして複数のバージョンのGCCを同時にインストールし、g++Appleエイリアスを数字なしで維持できるようにするためですclang++

したがって、gccパッケージをインストールしてg++-11C ++でコンパイルすると、clang++macOSのコンパイラはコードをサポートしません。

関連情報