macOSでのコンパイルにおいて、ユーザー定義の型識別子に関して大量のエラーが発生した場合の、対処方法を記載しておきます。英文サイトに事象と解決策はいくつか掲載されているのですが、どれもはっきりとした書き方はされていません。私がハマって解決した例として参考にしてください。
1. エラーの例
明示的にmakeやcmakeでコンパイルした場合、brew installでパッケージが見つからなくてソースコンパイルが行われた場合などに、以下のエラーがでます。
/Library/Developer/CommandLineTools/usr/include/c++/v1/cstdint:158:8: error: no member named 'uint8_t' in the global namespace using::uint8_t;
(同様なものが大量に出ます)
(error: unknown type name 'uint8_t' とかの場合もあります)
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2. 原因
macOSをアップグレードした際に、古いヘッダファイルが残存してしまうためのようてす。私の場合は、High SierraからMojaveにアップグレードしていました。
3. 対処
/usr/local/includeを強制的に切り替えます。この中はヘッダファイルだけしかありませんので、macOSの動作そのものには影響を与えませんので、ご安心ください。
$ sudo mv /usr/local/include /usr/local/include.org
削除する、という荒っぽい解決策もいくつかみられましたが、戻せるようにリネームしておきます。
たたし、これだけだと、コンパイルは通りません。コンパイル時に/usr/local/include/なんとか、が無いと怒られます。homebrewを最初からインストールしなおしして、さらにコンパイル時に無いと怒られる「なんとか」に関係するパッケージ(しかしbrewではあると言われる)について、brew uninstallして、brew installしなおすことを繰り返します。これによって、新しい /usr/local/inbclude (中身はシンボリックリンクだけですが)が作られ、コンパイル可能になります。