У меня есть файл конфигурации с большим количеством определений, которые используются для включения модулей во время выполнения. Кроме того, это означает, что я должен проверить очень многое внутри кода для определения. Для каждой проверки требуется 3 строки, это возможно сделать в одной строке.Один оператор строки #if
#if FUNC_ENABLED
function_optional_call();
#endif
Я ищу что-то вроде.
CALL(function_optional_call(),FUNC_ENABLED);
Есть ли способ сделать это, или мне нужно использовать выражение 3 строки. Я знаю, что он может определить макро для каждого макро.
Skip function call if not defined
Но можно ли сгенерировать Generall Makro.
Какой компилятор и версия вы используете? поскольку это предпроцессорная вещь, я сомневаюсь, что есть общий способ сделать это, и вам придётся прибегнуть к некоторым трюкам. – Neil
Большинство компиляторов C, которые я использовал (еще в 90-х годах), не разрешали #if в #define (следовательно, проблема у вас есть). Если вы не можете использовать boost (согласно другому ответу), который является библиотекой C++, тогда он вряд ли будет легко разрешимым. – Neil