определение этих макросов для 0 или 1 - это тоже не то, что вам нужно?
ел бы написать код вC что-то вроде этого:
if(defined(MACRO)) ... else ...
но я не мог найти способ сделать это вC, поскольку определенный (MACRO) оператор препроцессора работает только внутри # if. Есть ли способ сделать это?
Что мне действительно нравится делать, так это писать:
ASSERT(UART, var >= 0);
где
#define ASSERT(NAME, TEST) \ do { \ if (defined(NAME) && !(TEST)) \ printf("Assert failed"); \ } while(0)
таким образом, я мог бы включить проверку ASSERT, когда макрос определен и, если он не определен, утверждения не должны проверяться. Если вы попытаетесь сделать это, то вы получите:
implicit declaration of function `defined'
что вполне понятно, так как компилятор GCC не находитdefined()
оператор препроцессора.