Можно создать дубликат:
C Macros and use of arguments in parenthesesC Программирование Макросы умножения
Я нашел этот макрос вопрос будет очень интересно.
Если следующий код определяется как Macro
#define MULT(x, y) x * y
И вызов функции производится в int z = MULT(3 + 2, 4 + 2);
. Желаемый выход 3 + 2 = 5 и 4 + 2 = 6 И 5 * 6 - 30.
Но возвращаемый выход был 13. Он принимает это как 3 + 2 * 4 + 2. Следовательно, в соответствии с приоритетом операторов он сначала оценивает 2 * 4.
В чем причина? В случае меньших функций, подобных тем, которые эффективны? Определение функции или использование макросов?
Столько дубликатов ... –
Как вы измеряете эффективность? Время кодирования, время выполнения, ремонтопригодность ... –
Макрос, вероятно, более эффективен. Если оптимизатор строит функцию, они, вероятно, будут эквивалентны. –