Мне нужен способ определить макрос FLAGS_IF
(или эквивалент), чтобы
FLAGS_IF(expression)
<block_of_code>
FLAGS_ENDIF
при компиляции в отладке (например, с помощью специального компилятора) компилируется в
if (MyFunction(expression))
{
<block_of_code>
}
тогда как в release не приводит к какой-либо инструкции, так же, как это было
#if 0
<block_of_code>
#endif
В моем невежестве по поводу препроцессоров C/С++ я не могу думать ни о каком наивном способе (поскольку #define FLAGS_IF(x) #if 0
даже не компилирует) сделать это, можете ли вы помочь?
Мне нужно решение, которое:
- Не перепутано, если
*/
присутствует внутри<block_of_code>
- Не забудьте сгенерировать 0 команд в выпуске даже внутри встроенных функций на любой глубине (думаю, это исключает
if (false){<block_of_code>}
)? - По возможности совместим с стандартом