C言語における定数式の検出:マクロベースのアプローチ

2025-05-13

この記事では、式がコンパイル時定数であるかどうかをチェックするC言語マクロを作成する様々な方法を探求しています。著者は、C23の`constexpr`と`typeof`、GNU拡張の`__builtin_constant_p`、C11の`static_assert`、そして`sizeof`と複合リテラルを使った巧妙なテクニックを使用する方法を調査しています。それぞれの方法には長所と短所があり、新しいC標準を必要とするもの、コンパイラの拡張機能に依存するもの、式の型を変更したり警告を生成したりするものがあります。この記事は、これらの方法の長所と短所をまとめ、よりエレガントな解決策への希望を述べています。

続きを読む

C言語における定数式の検出:マクロアプローチ

2025-04-22

この記事では、式が定数式かどうかを検出するC言語マクロを作成する様々な方法を探ります。著者は、C23の静的複合リテラル、GNU拡張の`__builtin_constant_p`、`static_assert`、`sizeof`と複合リテラル配列の組み合わせ、`sizeof`と列挙型定数の組み合わせ、そしてコンマ演算子など、いくつかの手法を調査しています。それぞれの方法には長所と短所があり、C23のサポートは限定的であり、`__builtin_constant_p`はGNU拡張に依存し、`static_assert`と`sizeof` の方法は式の型を変更する可能性があり、コンマ演算子は警告を生成します。著者は、完璧な解決策は存在せず、最適な選択は具体的なニーズとC言語の標準バージョンによって決まるという結論に至っています。

続きを読む
開発 定数式

BQNでAdvent of Code 2024を制覇

2025-01-25

著者は2024年のAdvent of Codeチャレンジに参加し、配列言語BQNを学ぶことにしました。この記事では、環境構築、ドキュメントとツールの使用経験、BQNの独自演算子、配列操作、関数定義方法などの特徴を紹介しています。いくつかのAdvent of Codeの問題解決例が示され、BQNが配列やグリッド問題を扱う際の強みと、命令型言語との違いが明らかになります。最初は難しいと感じましたが、最終的に著者はBQNを楽しくて強力な言語だと評価し、特にプログラミングパズルを解くのに適していると結論付けています。

続きを読む
開発 配列言語