Код: Выделить всё
+#ifdef __BIG_ENDIAN__
+#define B_O16(x) ((((x) & 0xff) << 8) | (((x) & 0xff) >> 8))
+#define B_O32(x) ((((x) & 0xff) << 24) | (((x) & 0xff00) << 8) \
+ | (((x) & 0xff0000) >> 8) | (((x) & 0xff000000) >> 24))
+#else
+#define B_O16(x) (x)
+#define B_O32(x) (x)
+#endif
+
+#define L_ADD(x) (B_O32(x) & 0xffff) + ((B_O32(x) >> 12) & 0xffff00)
+#define FARP(p) (((unsigned)(p & 0xffff0000) >> 12) | (p & 0xffff))
убираем B_O16 B_O32
L_ADD убираем тоже
а там где использовался L_ADD
вставляем FARP
FARP же заменяем тем что было в L_ADD и вместо B_O16 B_O32 вставим htonl16 htonl32
вот там будет гут
кстати можно в весу или отдельно доделать DDI
вопрос оно нужно или нет?
и что с ним делать