Есть ли способ условно включить заголовок или импортировать модуль в зависимости от переключателя/флага?C++

Программы на C++. Форум разработчиков
Anonymous
Есть ли способ условно включить заголовок или импортировать модуль в зависимости от переключателя/флага?

Сообщение Anonymous »

Я пробовал:

Код: Выделить всё

#ifdef USE_CPP20_MODULES
#define IMPORT_OR_INCLUDE(module_name, include_filepath) \
import module_name;
#else
#define IMPORT_OR_INCLUDE(module_name, include_filepath) \
#include include_filepath
#endif
Но ни один из компиляторов это не компилирует:
Clang:

Код: Выделить всё

    Output of x86-64 clang 19.1.0 (Compiler #1)

:6:2: error: '#' is not followed by a macro parameter
6 | #include include_filepath
|  ^
GCC:

Код: Выделить всё

:5:56: error: '#' is not followed by a macro parameter
5 | #define IMPORT_OR_INCLUDE(module_name, include_filepath) \
Я не понимаю, почему препроцессор не работает. Полагаю, вы не можете использовать #include в качестве определения/замены макроса?

Подробнее здесь: https://stackoverflow.com/questions/791 ... pending-on

Вернуться в «C++»