Порядок компиляции 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
Ответить

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

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

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

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

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