clangで#inclue <bits/stdc++.h>

c++で競プロ関連の調べ物をしていると、includeの手間を省くためにbits/stdc++.hをincludeする例が多い。

clangでもstdc++.hを使うための設定方法をメモしておく。

clang++のheaderファイルのsearch pathを確認

$ clang++ -x c++ -v -E /dev/null
...
#include <...> search starts here:
 /Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/include/c++/v1
 /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/include
 /Library/Developer/CommandLineTools/usr/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/System/Library/Frameworks (framework directory)
End of search list.
...

上記のディレクトリ内が再帰的にsearchされるので、どれかにbits/stdc++.hを作っておけばincludeできるようになる。

$ cd  /Library/Developer/CommandLineTools/usr/include
$ sudo mkdir bits
$ curl -o bits/stdc++.h  https://gist.githubusercontent.com/reza-ryte-club/97c39f35dab0c45a5d924dd9e50c445f/raw/47ecad34033f986b0972cdbf4636e22f838a1313/stdc++.h

ちなみにstdc++.hが何なのかという点についてはこちらのqiitaがわかりやすい

で、結局 #include <bits/stdc++.h> って何? - Qiita

参考

AtCoder用C++開発環境 (Mac編) | Ray's Note

gcc のインクルードパスを確認する - ユユユユユ