Вы можете сделать это:
static int f(int x, int y) { return (x+y); }
static int g(int x, int y) { return (x*y); }
#define A 1, 2
#define B 2, 3
Если бы вы использовали компилятор C, который поддерживал нестандартную директиву inline
, вы могли бы устранить накладные расходы при вызове функции. И если вы использовали C ++,
template<T> T f(T x, T y) { return (x+y); }
template<T> t g(T x, T y) { return (x*y); }
#define A 1, 2
#define B 2, 3
, который будет работать примерно так же, как ваше предполагаемое C-решение для макроса.
Если f
и g
должны быть макросами, препроцессор C не может передать несколько аргументов макросам без фактической запятой, появляющейся на сайте вызова. Для этого вам нужно добавить уровень препроцессора выше препроцессора C.