Знаешь, что общего у багов в игровых движках, уязвимостей в мессенджерах и той самой ошибки, из-за которой ты час отлаживал код? Часто это макросы. Та самая штука, которая выглядит безобидно, работает как магия, но может подложить свинью даже опытным разработчикам. Сегодня разберём, почему макросы с параметрами — это как нитроглицерин: невероятно мощно, но обращаться нужно осторожно. И да, после этой статьи ты будешь понимать код на уровне, на котором его видят создатели движков и операционных систем. Вот здесь начинается самое интересное. Когда ты пишешь: #define SQR(a, b) a * b Ты думаешь, что создал функцию для вычисления площади? Нет. Ты создал текстовую замену. Препроцессор — это не компилятор, это редактор текста на стероидах. Смотри, что происходит на самом деле: int result = SQR(2, 3); Препроцессор не вызывает функцию. Он просто копипастит: берёт 2, вставляет вместо a, берёт 3, вставляет вместо b. Получается: int result = 2 * 3; Параметры макроса — это не переменные. Это просто
Макросы в C: почему твой код может взорваться в самый неожиданный момент 💣
10 февраля10 фев
3 мин