Ответ 1
Нет, нет никакой разницы между ними при использовании таким образом. Последняя форма (с использованием defined()
) полезна, когда исходный #if
или один из следующих #elif
условий требует более сложного теста. #ifdef
все равно будет работать, но в этом случае может быть более понятным использование #if defined()
. Например, если необходимо проверить, определено ли более одного макроса, или если оно равно определенному значению.
Дисперсия (с использованием обоих в файле) может зависеть от конкретных тонкостей в использовании, как упомянуто выше, или просто плохой практики, будучи несогласованными.