C99規格で新規に追加された標準ライブラリ

● 複素数について

 これはまだ対応できていないようです.対応されると複素数の扱いが楽になるので,マンデルブロート集合の画像が作りやすくなるでしょう.

● 浮動小数点について

 これもまだ対応できていません.これは各環境で独自に扱っていた浮動小数点の扱い方を統一したものです.しかし,これに対応するということは,いままでの方式を変更しなければならないので,各環境で問題が残るでしょう.

● stdint.hで定義された型を使う方式について

 これはstdint.hで新たに定義された型を標準ライブラリで使用する際に,マッチングをとるための書式指定マクロの定義です.inttypes.hに定義されているはずですがGCCではstdint.hに対応していないので,書式指定マクロもまだ定義されていません.

● stdbool.hについて

 これはGCC3.2の環境で動作しました.stdbool.hにはbool,true,falseが定義されていて,プログラム中で使うことができます(リスト21).

〔リスト21〕stdbool.hの例(test140.c)
/*
 *stdbool.hについて
 */
#include <stdio.h>
#include <stdbool.h>
main()
{
        bool  test;
        test    =       true;
        if      (test   )
        {
                printf("testは真です\n");
        }
}

 実行結果は以下のとおりです.

  $ ./test140
  testは真です

● stdint.hについて

 前述しましたがstdint.hは定義されていません.現在int型の大きさは各環境によって8ビットだったり,32ビットだったりしますが,これを共通に扱うようにする目論見です.しかし,これは大きな変更なので受け入れられるかどうかわかりません.

 たとえば,int32_tという型をこの環境にもっていっても32ビットと扱えば,int型の大きさに依存するより,各環境に移植しやすくなります.

● tgmath.hについて

 これも定義されていません.たとえば数学関数では,doubleを返すsin(),floatを返すsin(),long doubleを返すsin()がありますが,これをマクロを使って見かけ上一つの関数にするためのものです.

● C99規格対応に関するGNU Cのバージョンごとの進捗

 いろいろ問題はあるようですが,C99規格の重要な部分はGCC3.2で対応できているようです.これに関する公式情報は以下のサイトにあるので,参照してください(図1).

〔図1〕Status of C99 features in GCC

  http://gcc.gnu.org/c99status.html

 このページはGCC2.95の対応についてまとめてありますが,このページからGCC3.0,GCC3.1,GCC3.3の対応をまとめたページへリンクが張ってあるので参考にしてみてください.

*          *

 C99規格の説明とGCCの対応については,これで終わります.

Copyright 2003 岸 哲夫

Copyright 1997-2025 CQ Publishing Co.,Ltd.

 

NEW記事内インデックス    連載インデックスはこちら   Interfaceのトップ
◆追加された関数やマクロについて
◆math.hのマクロ
◆stdio.hに追加されたいくつかの関数/stdlibに追加されたいくつかの関数
◆C99規格で新規に追加された標準ライブラリ