Skip to main content

IAR Embedded Workbench for Arm 9.70.x

Cの追加機能

このセクションの内容:

DLIBランタイム環境には、追加されたC機能がいくつか含まれています:

  • C 境界チェックインターフェース

  • DLib_Threads.h

  • iar_dlmalloc.h

  • LowLevelIOInterface.h

  • stdio.h

  • stdlib.h

  • string.h

  • time.h(time32.htime64.h

C 境界チェックインターフェース

Cライブラリは、標準CのAnnex K (境界チェックインターフェース)をサポートします。ヘッダファイルerrno.hstddef.hstdint.hstdio.h、stdlib.hstring.htime.h (time32.htime64.h)、および wchar.hにシンボル、型、および関数を追加します。

インターフェースを有効にするには、システムヘッダファイルに含まれる前に、プリプロセッサ拡張子 __STDC_WANT_LIB_EXT1__ を1に定義します。__STDC_WANT_LIB_EXT1__を参照してください。

追加の利点は、より安全なバージョンが存在する危険な関数 を使用した場合に、コンパイラが警告メッセージを出すようになります。例えば、より安全なstrcpy_sの代わりにstrcpyを使用すると、コンパイラは警告メッセージを発行します。

DLib_Threads.h

DLib_Threads.hヘッダーファイルは、ロックとスレッドローカルストレージ (TLS) 変数のサポートが含まれます。これはスレッドのサポートの実行に有効です。詳細については、ヘッダーファイルを参照してください。

iar_dlmalloc.h

iar_dlmalloc.hヘッダファイルには、アドバンストヒープハンドラ(dlmalloc)のサポートが含まれます。詳細については、ヒープについてを参照してください。

LowLevelIOInterface.h

ヘッダーファイルLowLevelInterface.hには、DLIBによって使用された低レベル I/O関数の宣言を含みます。DLIB低レベルI/Oインタフェースを参照してください。

stdio.h

以下の関数は、追加のI/O機能を提供します。

fdopen

低レベルのファイル記述子に基づいてファイルを開きます。

fileno

ファイル記述子(FILE*)から低レベルのファイル記述子を取得します。

__gets

stdinでのfgetsに相当します。

getw

stdinからwchar_t文字を取得します。

putw

wchar_t文字をstdoutに配置します。

__ungetchar

stdoutでのungetcに相当します。

__write_array

stdoutでのfwriteに相当します。

string.h

以下は、string.hに定義された追加の関数です。

strdup

ヒープ上の文字列を複製します。

strcasecmp

大文字/小文字を区別しない文字列を比較します。

strncasecmp

大文字/小文字を区別する境界のある文字列を比較します。

strnlen

境界のある文字列の長さ。

time.h

time_tおよび関連の関数timectimedifftimegmtimelocaltimemktimeを使用するために、2つのインタフェースがあります。

  • 32ビットのインタフェースは、1900年から2035年までをサポートし、time_tで32ビットの整数を使用します。型と関数の名前は__time32_t__time32などです。この派生形は、主に旧バージョンとの互換性のためだけに使用できます。

  • 64ビットのインタフェースは-9999年から9999年をサポートし、time_tで符号付きのlong longを使用します。型と関数の名前は__time64_t__time64などです。

インタフェースは、3つのヘッダファイルで定義されます。

  • time32.h__time32_ttime_t__time32time、および関連の関数を定義します。

  • time64.h__time64_ttime_t__time64time、および関連の関数を定義します。

  • time.hには、_DLIB_TIME_USES_64の定義に従って、time32.hまたはtime64.hが含まれます。

    _DLIB_TIME_USES_64が次の場合:

    • 1に定義されている場合、time64.hを含みます。

    • 0に定義されている場合、time32.hを含みます。

    • undefined, it will include time64.h.

どちらのインタフェースでも、time_tは1970年から始まります。

アプリケーションはどちらのインタフェースも使用でき、32ビットまたは64ビットの派生形を明示的に使用して両方を混在させることも可能です。

__time32, __time64も参照してください。

longが8バイトで64ビットtime.hが使用される場合、clock_tは8バイトで、それ以外の場合は、4バイトです。

デフォルトでは、時間ライブラリは、タイムゾーンおよび夏時間機能をサポートしません。これらの機能を有効にするには、リンカオプション--timezone_libを使用します。‑‑timezone_libを参照してください。

__getzoneからタイムゾーンと夏時間情報を読み込みまたは強制読み込みには、2 つの関数が使用できます。

  • int _ReloadDstRules (void)

  • int _ForceReloadDstRules (void)

これらの両方の関数は、DSTルールが見つかった場合は0を返し、見つからなかった場合は-1を返します。