Можно ли написать макрос C, который возвращает число его аргументов?
Я хочу что-то, что делает:
foo(1) -> 1
foo(cat, dog) -> 2
foo(red, green, blue) -> 3
Еще лучше, если этот макрос можно определить таким образом, чтобы он работал С##, чтобы
foo(1) -> bar1(1)
foo(cat, dog) -> bar2(cat, dog)
foo(red, green, blue) -> car3(red, green, blue)
Спасибо!
EDIT: Мне действительно нужен макрос, а не функция. Предложения по использованию функций будут опущены.