C99 方式で、VC++ コンパイラでもサポートされています。
#define FOO(fmt, ...) printf(fmt, ##__VA_ARGS__)
__VA_ARGS__
それを行う標準的な方法です。必要がない場合は、コンパイラ固有のハックを使用しないでください。
元の投稿にコメントできないのは本当に腹立たしいです。いずれにしても、C++ は C のスーパーセットではありません。C コードを C++ コンパイラでコンパイルするのは本当にばかげています。 Donny Donny がしないことはしないでください。
私はそれが可能だとは思わない. 引数を個別に必要としない限り、二重括弧でそれを偽造することができる.
#define macro(ARGS) some_complicated (whatever ARGS)
// ...
macro((a,b,c))
macro((d,e))