Я планирую участвовать в конкурсе на программирование через несколько месяцев, и я хочу определить некоторые макросы, чтобы свести к минимуму типизацию, которую мне нужно сделать. Привлечение числа к власти достаточно распространено, чтобы воспользоваться этим, мне сказали. Мне нужно только работать с целыми аргументами (хотя сами аргументы могут быть выражениями). Я пробовал несколько разных вариантов, но я не могу получить правильный синтаксис.Определение экспоненциального препроцессора Macro
/* c is where the result is stored */
#define EXP(a,b,c) c=a; for (int ii=0; ii<(b)-1; c*=(a), ii++);
Это работает, но я не могу использовать EXP (а, б, в) в выражении, как function(EXP(a,b,c));
я должен был бы сделать
int result;
EXP(a,b,result);
function(result);
В этом, я думаю, что будет работать в выражениях, но он не компилировать
#define EXP(a,b) int c=a; for (int ii=0; ii<(b)-1; (c)*=(a), i++); c
с: error: expected primary-expression before ‘int’
при использовании:
int result = EXP(2,10);
это мой репрезентативная функция:
int EXP(int base, int power) {
int result = base;
for (int ii=0; ii<power-1; ii++)
result *= base;
return result;
}
Это существо C++, есть конкретная причина для Вас, чтобы стремиться к макро вместо встроенная функция? –
Это C++, вы рассмотрели метапрограммирование шаблона? – juanchopanza
Обычно я просто ввел функцию. На соревновании есть только один компьютер в каждой команде по 3, каждый член по очереди. Сначала мне нужно будет выписать свою программу на бумаге, а затем ввести в компьютер как можно быстрее. Практически, однако, я, вероятно, не буду экономить много времени с макросом, я думаю. – xst