Asayomu Tech
注目★★★★★Lobsters

C++26に #embed 追加、バイナリファイルの埋め込みが標準化

30秒で把握

  • 1#embed により C++26 でバイナリファイル埋め込みが標準化・外部ツール不要・4 パラメータで制御可能
  • 2GCC は 100 MB ファイル埋め込みで 1.3 秒、従来の xxd ツールは 139 秒・13 GiB メモリ消費
  • 3GCC 15 以上・Clang 19+ 実験的対応・MSVC 未対応、ビルドシステム複雑性削減につながる

要約

C++26 は #embed プリプロセッサディレクティブを採用し、バイナリファイルをコンパイル時に整数リストに変換するネイティブ機能を実現した。従来は xxd や objcopy などの外部ツール・スクリプトで対応していたが、#embed により外部ツールと生成ファイルが不要になる。limit・prefix・suffix・if_empty の 4 つのパラメータで、埋め込みサイズの制限、前後の文字列追加、空ファイル時のフォールバック対応を直接記述できる。GCC 15 以上が完全対応、Clang 19+ も実験的サポート。100 MB ファイル埋め込みで GCC は 1.3 秒・117 MiB、従来の xxd 生成コードは 139 秒・13 GiB と大幅な高速化を実現した。

あなたへの影響

証明書・設定ファイル・小さな画像などをバイナリで埋め込む際、これまでのプロジェクト固有の変換ツール・スクリプト依存から解放される。

推奨:C++26 対応プロジェクトでは、ビルドルールを簡潔にしながら埋め込みリソースの同期漏れリスクを排除できるため、来期以降のレガシーコード整理候補として検討の価値がある。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。