Вы не можете использовать условные директивы препроцессора внутри макроса. Вообще говоря, решение состоит в том, чтобы вывернуть это наизнанку: использовать условные директивы, чтобы определять макрос по-разному в разных случаях. Однако это не сработает для универсального макроса макро-теста, который вы предлагаете, и он также ограничен тем фактом, что он определяет, выполняется ли условие в точке, где определен макрос, а не в точке, где он используется.
Возможно, вас утешит тот факт, что это все равно никогда не сработает, так как аргументы функционально-подобного макроса раскрываются перед заменой в текст для замены макроса (кроме случаев, когдапара особых случаев, которые не относятся к ключевой части вашего кода).
Существуют альтернативы, которые могут работать, если возможные значения всех интересующих макросов ограничены короткими списками токенов, которые могут появитьсякак или в идентификаторах. Существуют различные альтернативы, которые могут быть адекватными, если вы можете выбрать небольшое подмножество макросов, которые вы хотите протестировать. Нет альтернатив, которые делают то, что вы предлагаете, во всей их полноте, если только вы не рассчитываете писать директивы условной компиляции напрямую, без макроса, что на самом деле является обычным способом решения этой проблемы.