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

FreeBASIC FB_ARG_COUNT

目次→言語文書→その他→組み込み定義__FB_ARG_COUNT__←オリジナル・サイト

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

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

コンパイラーによって実行される固有の定義(マクロ)。

構文:
__FB_ARG_COUNT__( args... )

パラメータ:
args...
引数リスト

記述:
引数リスト(args...) 内の引数の数を数えて、対応する値を返します。
値は常に返され、0 は空の引数リストに対応します。

引数の区切り文字はコンマ (,) なので、空でない引数リストの戻り値は、メインのコンマ(入れ子でない)の数に 1 を加えたものです。

例:
#macro m( args... )
    Print __FB_ARG_COUNT__( args )
#endmacro

m()
m(a)
m(b,c)
m(,d)
m(,e,)
m(,,,)

Sleep

/' Output:
 0
 1
 2
 2
 3
 4
'/

' 複数のサブパラメーターを含められる、可変個引数パラメーターを持つマクロ:
'   variadic_parameter によって渡されるさまざまな引数を区別するには、
'   最初に、演算子 # (Preprocessor Stringize)を使って、variadic_parameter を文字列に変換できます。
'   次に、マクロに渡された引数(__FB_ARG_COUNT__)の数に基づいて、[For...Next] ループ内の区切り文字(通常はコンマ)を見つけることで、
'   この文字列(#variadic_parameter)でそれぞれ渡された引数を区別します。

#macro average(result, arg...)
    Scope
        Dim As String s = #arg
        If s <> "" Then
            result = 0
            For I As Integer = 1 To __FB_ARG_COUNT__( arg ) - 1
                Dim As Integer k = InStr(1, s, ",")
                result += Val(Left(s, k - 1))
                s = Mid(s, k + 1)
            Next I
            result += Val(s)
            result /= __FB_ARG_COUNT__( arg )
        End If
    End Scope
#endmacro

Dim As Double result
average(result, 1, 2, 3, 4, 5, 6)
Print result

Sleep

/' Output :
 3.5
'/


バージョン:
QBからの違い:
参照:
組み込み定義 に戻る
←リンク元に戻る プログラム開発関連に戻る

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

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

表示-非営利-継承