Maybeモナドを用いたC言語における安全な除算

2025-08-11

この記事では、C言語における型と境界が安全なジェネリックコンテナの実装について詳しく説明します。著者はHaskellから着想を得たMaybe型を紹介し、値を返さない可能性のある関数(例:ゼロ除算)を処理します。Maybeを定義するマクロを使用して安全な除算関数が作成され、ゼロ除算と、表現可能な最小の整数を-1で割る境界ケースが処理されます。GCCによって生成されたアセンブリコードが分析され、関数の安全性が検証されます。著者は、Cプログラムの完全な安全性を証明するこのアプローチの限界を指摘して結論づけています。

続きを読む
開発

C言語におけるジェネリックコンテナ:vecの実装

2025-07-26

この記事では、C言語における型安全で境界チェックが可能なジェネリックコンテナ「vec」の実装について詳述しています。vecは本質的に、reallocを用いて動的にサイズ変更可能な配列です。vec_push関数の実装やメモリ確保エラーの処理方法など、実装の詳細を説明しています。さらに、パフォーマンス向上のための改良版インターフェースであるvec_push_capとvec_push_autoについても検討し、vec2arrayマクロによる従来のC配列との相互運用性についても論じています。

続きを読む