Есть ли способ условно включить заголовок или импортировать модуль в зависимости от переключателя/флага?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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