Моя библиотека должна считывать целые числа с прямым порядком байтов (4 байта) и преобразовывать их в порядок байтов хоста для обработки. В то время как на * nix ntohl
работало под Windows, использование ntohl
требует использования Ws2_32.dll
(Winsock).
Такую зависимость я бы предпочел устранить. Самый простой способ сделать это, по-видимому, состоит в том, чтобы написать мою собственную функцию замены байтов (тривиальное упражнение, учитывая, что производительность не является реальной проблемой). Однако для этого требуется способ определить порядок следования байтов системы, в которой компилируется моя библиотека (так что я могу #ifdef
отключить функцию подкачки в системах с прямым порядком байтов).
Поскольку стандартного определения порядка следования байтов в препроцессоре не существует, кажется, что его необходимо определить с помощью моей системы сборки (cmake). Каков наилучший способ сделать это? (Я устал от решений типа «скомпилировать тестовый файл и посмотреть», поскольку они могут препятствовать кросс-компиляции.)