コンパイラーによって実行される固有の定義(マクロ)。
構文:
__FB_ARG_COUNT__( 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からの違い:
参照: