C/C++」タグアーカイブ

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++日本語リファレンス

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

C/C++ auto

gcc や Clang でのビルド方法ページを作っている筆者ですが。
ちょっと、いや数年サボっていたら C 23 や C++ 20 が出ていた。
流石に情報が古いので書き換えしようかと、てか調べないと。

C23 (C言語) – Wikipedia

ついに C 言語にも auto キーワードが、今頃知った。
いや C++ の柔軟な奴と違って変数宣言にしか使えないっぽい。
やってみないと断言できないので少し使ってみる。

#include <stdio.h>
#include <stdlib.h> // free
#include <string.h> // strdup

/**
 * gcc -std=c23 c23.c
 * clang -std=c23 c23.c
 */
int calc(int n) {
    return n * n;
}

int
main (int argc, char *argv[]) {
  
    // 静的文字列はイケる
    auto om = "OLYMPUS"  " " "Workspace";
    printf ("%s\n", om);
    // ポインタもイケる
    auto heap = strdup("おならプー");
    printf ("%s\n", heap);
    free(heap);
    // 計算値もイケる
    auto num = 3*5;
    printf ("%d\n", num);
    // 再代入も普通に可能
    num = 30;
    printf ("%d\n", num);
    // 関数の戻り値dでも可能
    auto num2 = calc(8);
    printf ("%d\n", num2);
    // ループがちょっとだけ簡易にできる
    char *l_mount[] = {"Leica", "Panasonic", "SIGMA"};
    auto count = sizeof (l_mount) / sizeof (l_mount[0]);
    for (auto i=0; i<count; i++) {
        printf ("%s\n", l_mount[i]);
    }
    // 配列自体は無理
    //auto num_array = {1, 2, 3};
    return 0;
}

gcc

配列もダメか、あんまり便利じゃないてかコレ意味あるの?
とにかく -std=c23 又は -std=c2x 指定はどちらでも使えました。

#include <iostream>

/**
 * Fedora 42 は普通にイケました
 * g++ -std=c++20 c23.cc
 * 
 * macOS ではエラーになったので、場所指定は人によって違うと思う
 * clang++ -I /Library/Developer/CommandLineTools/SDKs/MacOSX15.4.sdk/usr/include/c++/v1 -std=c++20 c23.cc
 */

auto
get_half(auto num) {
    return num / 2;
}
 
int
main (int argc, char *argv[]) {
  
    //char *l_mount[] = {"Leica", "Panasonic", "SIGMA"};
    auto l_mount = {"Leica", "Panasonic", "SIGMA"};

    for (auto obj : l_mount) {
        std::cout << obj << std::endl;
    }
    // 簡易オーバーロード
    std::cout << get_half(3) << std::endl;
    std::cout << get_half(3.0) << std::endl;

    return 0;
}

clang

C++ の auto はまさかのこんなことまで可能なのにね。
おまえは Python か、偽オーバーロードの中身はどうなっているのやら。
C++ でも stdio な某クソ OS はどうでもいいよね。

それより Clang が iostream を見つけてくれないんですけど。
macOS だけでなく Linux 版も同じみたいだけどバグなのか?
-I で場所指定すれば通るけどもっといい方法がありそうな。

Sekirei

今日の五条川。
夏にヒマワリ畑だった大口某所がコスモス畑になっていました。

1

大量の秋桜と秋の五条川桜並木、狙ったような洒落ができる。
カメラ女子も沢山、一眼で花を撮っている女性ってなんかいいですね。
いや若い娘も定番だったオリンパスペンの人もいないけど。

2

よしよし今回もセイヨウミツバチがきてくれた。
欲を言えば日本ミツバチが来て欲しいけどここらにいない。
さて花はこれくらいにして。

3

その近くではカワラヒワの群が住み着いているようで。
ってなんか一匹だけ違うのがいるぞ。

4

あれ?どう見てもジョウビタキのメスなんですけど。
もう来ているのか、あぁ冬が来るって感じ。

以下画質は悪いけど。

5

ハクセキレイ、いつもはスルーするけど。

6

セグロセキレイ、ほぼ同じ所にってあれ?

7

キセキレイまで、おまえら縄張り争いしないのか!

8

ついでみカワセミ、川底にいるのって目面しい。
てかおまえ歩けたのか、初めて歩いているのを見た。
以上ほぼ同じ場所で、こんなこともあるんだなって。

Sunflower

もうしばらく夜勤が決まる、変則勤務は頭が回らないね。
プログラミング関係は連休までおやすみ。

日曜日にいつもの五条川でパナライカを背負って野鳥探し。
で、大口のメガドンキユニー(長い)近くにある向日葵畑が目についた。
多分だけど、一度帰宅してデジイチを持って再訪したみたいな人達がワンサカ。
その時筆者は LUMIX G 25mm も持っていた、ということで撮影会に参加。

あれ?なんか違う。
彼岸花の時もそうだった、実物は凄く綺麗なのに写真にするとつまらない。
42.5mm も持ってきたほうが良かった?いやココはもっと広角で撮りたいかも??
もしかして 25mm も割高みたいなパナライカを選んでいたら迷わなかった、かも。
迷ったけど早々に野鳥探しへ戻る、何もいなかったけど。

リベンジしたいけどなんか我が LUMIX では綺麗に撮れる気がしない。
そうだ NIKON を使おう、たまにはコッチも使ってやらないと。
ということで夜勤明けに D3400 を持ってリベンジしてみた。

1

うんなんかシックリきた、キットズームの広角端なのにイイ感じ。
4:3 ではなく 3:2 だからなのか、絵作りの差なのか。
野鳥は断然 LUMIX なんだけど、それはレンズの差だし。

2

単焦点も NIKON のほうがやっぱりイイな。
APS-C の入門レンズでこんだけ撮れれば十分ですよ。

3

クマバチがいたので f2.2 まで開けてコラボを。
背景はボカしすぎたかなって感じだけど悪く無いかも。
てかハチが逃げる前に撮らなきゃなので絞りを選んでいる暇無い。

マジで思う、カメラも信者にならず色々使ってみたほうがいいな。
さて出勤の準備でもするか。

今回はトリミング無し。
-scaled を URL から外すとフルサイズ画像になります。

kiji

今日の大口町。

Hibari

ヒバリさん、ストーップストップひばり君(古い)
高く飛んでピーチクパーチクするのは威嚇だと思っていた。
アレ求愛だったのね、鳥の世界はよくワカラン。

Kawasemi

カワセミ君、ひっさしぶり。
いやココ水を張った田んぼだよ、魚いないよ?
調べたらカエルやザリガニも食うのか、へー知らなんだ。

Kiji

キジの夫婦、ちょっとブレた。
てかここらにマジでいるんだな、初めて見つけたよ。
こんなにデカくて目立つビジュアルなのにね。

ここ最近休日は小牧山に行っていたんだけど。
コマドリ等のさえずりは聴こえるけど姿は見えず。。。。。
が続いていたのでキジ発見は嬉しい。