問題タブ [variadic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 可変個引数マクロでのトークンの連結
Cでは、可変長マクロで各可変引数を連結することは可能ですか?
例:
通常の##
演算子は、可変個引数マクロに対して特別な意味を持ちます (空の引数リストのコンマを避けます)。with を使用した場合の連結__VA_ARGS__
は、最初のトークンのみで行われます。
例:
提案?
objective-c - obj-Cの可変個引数関数は最初の引数をスキップします
可変数のパラメーターを関数に渡す際に問題が発生しました。
問題は、関数が最初の引数をスキップすることです。関数の呼び出しは次のようになります。
最初の位置にダミーオブジェクトを渡すことができ、それによって目的の結果が得られますが、より良い解決策が必要です。ありがとう!
c++ - C++ 可変個引数テンプレートの異常な例
次の構造はどういう意味ですか?
これは gcc 4.4.5+ によってコンパイルされ、実行時に出力されます0
。
c++ - パラメータパックを生成することはできますか?
次の疑似コードを検討してください。
s のunique
中で一意の型のみで構成されるパラメーター パックを生成するようにテンプレートを作成することは可能ですか?T
worker<x,y,x,z>
x
y
z
T
c - 引数の数をカウントするマクロ
サードパーティのCライブラリの可変個引数関数があります。
argc
渡されたオプションの引数の数を示します。ここで提案されているように、引数の数をカウントするマクロでラップしています。読みやすくするために、マクロは次のとおりです。
そして私はそれをそのように包んでいます:
このPP_NARG
マクロは、1つ以上の引数を受け入れる関数に最適です。たとえば、にPP_NARG("Hello", "World")
評価され2
ます。
問題は、引数が渡されない場合、の代わりににPP_NARG()
評価されることです。このマクロがどのよう
に機能するかは理解していますが、この場合にも正しく動作するように変更することはできません。1
0
何か案は?
編集:
の回避策を見つけPP_NARG
、回答として投稿しました。
ただし、可変個引数関数のラップにはまだ問題があります。__VA_ARGS__
が空の場合、展開my_func
しfunc(0, )
てコンパイルエラーをトリガーします。
c++ - __VA_ARGS__ の問題を簡素化: NULL を抽出できない
私は次のコードを得ました:
ヘッダファイル:
cpp ファイル:
メインファイル:
正常に動作します!!
でもこれは:
うまくいきません..ヘッダーファイルのanyBodyのマクロをアウトコメントすると
次のようにできます。
今私の質問:
次のようないくつかのマクロをネストすることは可能ですか
彼らの間で?
「可変引数カウント」全体が、今日のcppではまだ実際には設計されていないことを読んだことがありますか?
関数 anyHtml() と anyBody() を見てみましょう。これはこの問題の「良い」解決策ですか、それともある種の汚い初心者ハックですか? ほとんどの場合、perl と Java と一緒に cpp を使用するのはまだ初めてです。
今..十分です:-)
言いたいことを教えてください.. :-)
- - 編集
わかった、ごめん..
出力は
しかし、それは与えます
私が両方を使用する場合
私が作れば
これらのエラーは表示されません..
このマクロがなければ、次のように入力する必要があります:
私が知っている非常に特別な.. :-(
- - 編集
私の問題を解決してくれてありがとう!
マクロ定義のセミコロンは、ネストの問題を解決しました...
関数 anyHtml() と body() はどうですか...
を使用して正しいですか
文字列操作の後にキャストしますか?
それとも汚れていますか?
c - 任意の型の (1 つの) 引数を受け入れる C 関数の書き方
C でリスト用の単純なライブラリを実装していますが、find
関数の記述に問題があります。
私の関数は、検索する任意のタイプの引数を
受け入れたいと思います:find(my_list, 3)
とfind(my_list, my_int_var_to_find)
.
私はすでにリストの要素のタイプに関する情報を持っています。
今のところ、これに対処する方法がいくつか見つかりました。
さまざまなタイプのサフィックスを持つさまざまな関数:
int findi(void* list, int i)
,int findd(void* list, double d)
- しかし、私はこのアプローチが好きではありません.ユニオンを使用:
any_type
しかし、この方法では、ユーザーにユニオンについて知ってもらい、find
. それは避けたいと思います。可変引数関数を使用:
int find(void* list, ...)
. 私はこのアプローチが好きです。ただ、引数の数に制限がないのが気になります。ユーザーは自由に書くことint x = find(list, 1, 2.0, 'c')
ができますが、それが何を意味するのかはわかりません。
この質問への回答も見ました: C : 1 つの関数引数に対して異なる構造を送信しますが、非ポインター引数を受け入れたいため、無関係です。
この関数を処理する適切な方法は何ですか?
function - スキームで不特定の数のパラメーターを処理するにはどうすればよいですか?
たとえば、((fn-stringappend string-append) "a" "b" "c")
私はこれを処理する方法を知っています(f x y z)
。しかし、不明な数のパラメーターがある場合はどうなりますか?この種の問題を処理する方法はありますか?
scheme - スキームの可変個引数関数
次の形式をとる可変個引数関数をSchemeで定義する必要があります
(define (n-loop procedure [a list of pairs (x,y)])
。ペアのリストは任意の長さにすることができます。
各ペアは、下限と上限を指定します。つまり、次の関数呼び出し(n-loop (lambda (x y) (inspect (list x y))) (0 2) (0 3))
が生成されます。
明らかに、carとcdrは私のソリューションに関与する必要があります。しかし、これを困難にする規定は次のとおりです。割り当てステートメントまたは反復ループ(whileおよびfor)はまったく使用されません。
whileとforを使用してペアのリストをインデックスに登録することはできますが、再帰を使用する必要があるようです。説明に必要だと思わない限り、コードソリューションは必要ありませんが、これがどのように攻撃される可能性があるかについて誰かが提案していますか?
c - 可変長変数を使用した書式設定
c89 gcc 4.7.4
私は次のようなマクロを試していました:
そして、このように使用します:
出力はまったく同じ形式になります。fmt
最初のマクロで引数を使用することの利点は何ですか? 本当に必要ではないようです。どうすればそれを利用できますか?