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