ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
1053272 Топик полностью
UniSoft (18.11.2020 01:35, просмотров: 183) ответил LightElf на Примерно так и сделано, но вылезают проблемы с индейцами. Результат должен иметь мелких индейцев, независимо от употребляемого чипа и компилятора.
Ну если у вас BIG_ENDIAN, тогда да, так не прокатит... 

Не проще тогда в run time это сформировать?

ну или просто не заморачиваться и сделать что-то типа такого, будет независимо от ENDIAN

#define TEXT_STRING "MyString"

const uint8_t product_string[2*sizeof(TEXT_STRING)/sizeof(TEXT_STRING[0])] = {
  sizeof(product_string),
  STRING_DESCRIPTOR_TYPE,
#if (sizeof(product_string) > 2)
  (uint8_t)(TEXT_STRING[0]), 0,
#endif
#if (sizeof(product_string) > 4)
  (uint8_t)(TEXT_STRING[1]), 0,
#endif
#if (sizeof(product_string) > 6)
  (uint8_t)(TEXT_STRING[2]), 0,
#endif
// .... и т.д. в зависимости от максимальной длинны

};