FreeBASIC マニュアルのトップに戻る

FreeBASIC CVA_COPY

目次→命令文→手続きCVA_COPY←オリジナル・サイト

CVA_COPY 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

すでに初期化されている可変数引数リスト・オブジェクト変数から、可変数引数リスト・オブジェクト変数を初期化するマクロ

構文:
cva_copy( dst_list, src_list )

パラメータ:
dst_list
初期化する対象 cva_list 変数
src_list
コピー元の cva_list 変数

内容:
1つの cva_list 型変数を、別の cva_list 型変数に、コピーします。
dst_list は、src_list の現在の状態を使って、初期化されます

src_list は、以前の cva_startcva_copy 命令文で、すでに初期化されている必要があります。

cva_copy は、可変個引数リスト・オブジェクトのコピー構築子に似ていて、デストラクタのような cva_end の呼び出しが最終的に一致する必要があります。
dst_listcva_end が呼び出された後、dst_list を再利用し、cva_startcva_copy の別の呼び出しで、再初期化できます。
cva_copycva_end 呼び出しは、両方とも、同じ手続きで呼び出す必要があります(プラットフォーム間の互換性のため)。

例:
'' example of using cva_copy to create
'' a copy of the variable argument list

Sub proc CDecl(count As Integer, ... )
    Dim args1 As cva_list
    Dim args2 As cva_list

    '' first list
    cva_start( args1, count )

    '' create a copy
    cva_copy( args2, args1 )

    For i As Integer = 1 To count
        Print cva_arg( args1, Integer ), cva_arg( args2, Integer )
    Next
   
    '' clean-up
    cva_end( args2 )
    cva_end( args1 )

End Sub

proc( 4, 4000, 300, 20, 1 )


'' example of using cva_copy to create
'' a copy of the variable argument list
'' and pass it to another procedure

Sub vproc CDecl(count As Integer, ByRef args As cva_list )

    '' if we don't know that caller made a copy
    '' of args, it is safe to make our own copy
    '' and leave the passed in args untouched

    Dim a As cva_list
    cva_copy( a, args )

    Print "vproc"
    For i As Integer = 1 To count
        Print cva_arg( a, Integer )
    Next
   
    '' clean-up
    cva_end( a )

End Sub

Sub proc CDecl(count As Integer, ... )

    Dim args As cva_list
    cva_start( args, count )

    '' if don't know that the called procedure
    '' will make it's own copy, it is safe to
    '' make a copy here and pass that instead

    Dim tmp As cva_list
    cva_copy( tmp, args )
    vproc( count, tmp )
    cva_end( tmp )

    '' args is still valid, we can use it
    Print "proc"
    For i As Integer = 1 To count
        Print cva_arg( args, Integer )
    Next
   
    '' clean-up
    cva_end( args )

End Sub

proc( 4, 4000, 300, 20, 1 )


バージョン:
方言差:
QBからの違い:
参照:
手続きに戻る
変数引数一覧に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2021-10-11 09:33:24
日本語翻訳:WATANABE Makoto、原文著作者:JeffMarshall

ホームページのトップに戻る

表示-非営利-継承