私はいくつかの古いコード (たまたまテキスト ゲーム) で作業していて、パターンを置き換えたいと考えていました。
strcasecmp(variable, "something") == 0 || strcasecmp(variable, "something else") == 0
より良いもので
in_list(variable, "something", "something else")
可変関数が適切だと思いました。しかし、マンページを見ると、いつ引数を使い果たしたかを知る方法がないことがわかりました (va_arg
未定義の動作が発生したときに呼び出す)。では、どうすればこれを処理できますか?
この制限を回避する方法があるかもしれません。#define
リストの最後にある種のセンチネルを配置して、それを確認できるかもしれませんが、それはエレガントではないようです. ハックのように感じますが、これを 1、2、... の引数を持つマクロのファミリに置き換えることができると思いますが、これはハックのように感じます。
これを行う正しい方法は何ですか?型を使用するようにプログラムを書き直す気はなく、sstring
で行き詰まっているとしchar*
ます。