> Хрена, поха в эмбедовку понесло?нет, ни разу. умный дом - это когда ключи от всего у кого-то поумнее хозяина, да?
С подобными граблями сталкиваешься на банальных почти полноценных компах. Просто они чуть-чуть отличаются от того, что был у гугломакака.
Следи за руками, они вот такими всегда и работают (теми тремя, которыми в тот момент не д$очат):
#elif GCC_VERSION_AVAILABLE(4, 5) && !defined(CRCUTIL_FORCE_ASM_CRC32C)
// Allow the use of _mm_crc32_u* intrinsic when CRCUTIL_USE_MM_CRC32
// is set irrespective of "-msse*" settings. This way, the sources
// may be compiled with "-msse2 -mcrc32" and work on older CPUs,
// while taking full advantage of "crc32" instruction on newer
// CPUs (requires dynamic CPU detection). See "interface.cc".
//
// If neither -msse4 or -mcrc32 is provided and CRCUTIL_USE_MM_CRC32 is set
// and CRCUTIL_FORCE_ASM_CRC32 is not set, compile-time error will happen.
// Why? Becuase GCC disables __builtin_ia32_crc32* intrinsics when compiled
// without -msse4 or -mcrc32. -msse4 could be detected at run time by checking
// whether __SSE4_2__ is defined, but there is no way to tell whether the
// sources are compiled with -mcrc32.
extern __inline unsigned int __attribute__((
__gnu_inline__, __always_inline__, __artificial__))
_mm_crc32_u8(unsigned int __C, unsigned char __V) {
return __builtin_ia32_crc32qi(__C, __V);
}
И пооооохер, что __builtin_ia32_crc32qi - gcc6.
Заниматься подобными проблемами придуман и успешно умеет - autoconf. Но вот его гугломакаки объявили неправильным, слишком сложным для обезьяньего понимания и вообще устаревшее ненужно.
Поэтому они пишут код, зависящий от CFLAGS. А все остальные - радостно его копипастят.
> "Вы не любите кошек? Да вы просто не умеете их готовить!"
зато я и кошачьим триппером не болею!
А китайцы вот умеют готовить - и теперь их в приличные страны только в запаянных гробах принимают.