Здравствуйте. Есть одна либа в исходных кодах. Там реализация бинарного протокола, соответственно перекладывание байтов (и битов!) всю дорогу. Либа портирована на ARM32, AVR и прочее. Всё «портирование» сводится к переопределению типов в зависимости от архитектуры. в частности, для gcc i386 там такой расклад:
/* Gcc for PC / Linux & Power PC / Linux */
#elif defined(__GNUC__) && \
defined(__gnu_linux__) && \
( defined(__i386__) || defined(__PPC405__) )
typedef unsigned char byte;
typedef unsigned char int8u; /* 8 bit unsigned */
typedef char int8s; /* 8 bit signed */
typedef unsigned short int int16u; /* 16 bit unsigned */
typedef short int int16s; /* 16 bit signed */
typedef unsigned int int32u; /* 32 bit unsigned */
typedef int int32s; /* 32 bit signed */
typedef int fast_int;
Есть небольшое желание собрать под x64, чтобы потом слепить биндинги для Rust. Но в этой архитектурной кухне я не в зуб ногой. Соответственно вопрос: если тупо к вышеприведенному добавить условие #if defined(__x86_64__) какой шанс что всё будет OK? Или придется как-то извращаться чтобы корректно заработало на x64?