[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
以下に示す組み込み関数を使うと、関数が受け取った引数を記録することが できたり、また、引数の数や型を知らなくても、同じ引数を 別の関数に渡すことができる。
また、関数呼び出しの戻り値を記録し、後でその値を返すこともできる。 これは、その関数が返そうとしているデータ型を知らなくても可能である。 (ただし、呼び出し側の関数がそのデータ型が返ってくることを想定している 場合に限られるが。)
__builtin_apply_args ()
この組み込み関数は、現在の関数に渡されたのと同じ引数を付けての
呼び出しをどのように行なうかを記述するデータへの void *
型の
ポインタを返す。
この関数は引数ポインタレジスタ、構造体値アドレス、関数へ引数を 渡すのに使われる可能性のある全てのレジスタを、スタック上に割り当てられた メモリブロックにセーブする。 次に、そのブロックのアドレスを返す。
__builtin_apply (function, arguments, size)
この組み込み関数は、function(void (*)()
型)を、
arguments (void *
型) と size (int
型) で
記述される仮引数のコピーを引数として呼び出す。
arguments の値は、__builtin_apply_args
が返す値と
すべきである。引数 size は、スタックの引数データの大きさを
バイト単位で指定する。
この関数は、function が返す値をどのように返すかを
記述するデータへの、void *
型のポインタを返す。
このデータは、スタック上に割り当てられたメモリブロック中に
セーブされる。
size の適切な値を計算するのはいつでも簡単というわけではない。
この値は __buitin_apply
によって、
スタック上にプッシュされ、入力引数領域からコピーされるデータ量を
計算するのに使われる。
__builtin_return (result)
この組み込み関数は、それを含む関数から result で記述される
値を返す。
result には、__builtin_apply
が返す値を指定すべきである。
This document was generated
using texi2html 1.78.