日別アーカイブ: 2025/05/30

Clang++ がヘッダを参照できない件

2025.05 現在、Clang++ が iostream を見つけられない。
iostream だけではなく C++ 標準ヘッダが参照できないようで。

まあバグだろうからすぐ修正されるだろう。
で、先日 CommandLineTools の更新通知がきた。
これで修正されて、って同じヤン。

15.4 から 15.5 にアップデートされてはいる。
小数点の無い MacOSX15.sdk は小数点付きへのリンクなのか。
アップデートに追従するみたいだから今後はこっち指定に。

ちなみにルートを Finder で開くには、端末を起動して。

open /

でイケます、GNOME の Linux なら gio open / ですね。
別にホームから command+up してもいいですけど、脱線でした。

そんなこんなで、ビルド毎に -I オプションなんてメンドイぞ。
なのでエイリアスを作ることに、修正されたら消せばいいだけだ。
~/.zshrc を開いて、作ってない人は作成して。

alias clang2="clang++ -I /Library/Developer/CommandLineTools/SDKs/MacOSX15.sdk/usr/include/c++/v1"

名前は各自適当に、筆者は clang2 にしました。

普通にビルドできるようになりました。
ヘッダの場所は環境によって違うかもなので各自調べてね。

ついでに、clang 17 や gcc 15 は C++23 もいくつか対応なのね。

#include <print>

/**
 * clang2 -std=c++23 cc23.cpp
 * g++ -std=c++23 cc23.cpp
 */

int main (int argc, char const* argv[]) {
    /**
     * println なら改行付き、いらないなら print
     */
    std::println("最高な{0}は{1}です", "カメラレンズ", "パナライカ");
    return 0;
}

Java と C# のいいとこどりみたいなことしやがって。
でも思うんだ、名前空間の区切りはドットでよくね?

コンパイラの実装状況 – cpprefjp C++日本語リファレンス

凄いサイトがあるもんだ。