Порядок компиляции C++ для использования в макросахC++

Программы на C++. Форум разработчиков
Anonymous
Порядок компиляции C++ для использования в макросах

Сообщение Anonymous »

Мне нужно разместить структуру двумя разными способами в зависимости от порядка байтов целевой платформы. В настоящее время я использую дополнительную фазу предварительной компиляции для запуска программы для проверки порядка байтов и определения макросов препроцессора, которые можно использовать следующим образом:

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

struct {
#if MACH_BYTE_ORDER_LSB
Byte            a;
Byte            b;
#else
Byte            b;
Byte            a;
#endif
};
Мне бы действительно хотелось избавиться от этой фазы предварительной компиляции ./configure, но, AFAIK, нет стандартного макроса, на существование которого я мог бы положиться в каждом компиляторе, совместимом с C++20.
Хотя в C++20 введен std::endian в заголовке , похоже, это полезно только во время выполнения тестах и в static_assert тестах времени компиляции.
Есть ли способ вместо этого использовать это из препроцессора C++ или иным образом изменить структуру структуры, чтобы расположить поля в правильном порядке?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-macros

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