В http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0065d/Cihejcda.html есть вариант и примечание:
Контейнер перечисления всегда целочисленный
Выберите этот параметр, чтобы все перечисления сохранялись в целых числах. По умолчанию компилятор использует наименьший тип данных, который может содержать все значения в перечислении.
Примечание
Этот параметр не рекомендуется для общего использования и не требуется для ANSI-совместимого источника. При неправильном использовании эта опция может привести к ошибкам в результирующем изображении.
Каков пример такого неправильного использования в C?
Фон:
Я разрабатываю встроенное приложение на C, удаление этого флага компилятора исправило ошибку (или только симптомы другой ошибки). Ошибка была
sprintf(big_enought_char_array, "%4.1f", float_var)
вызов функции неправильно форматировал числа с плавающей запятой.
Это было почти исправлено с помощью правильного выравнивания памяти, используемой в качестве стека. Почти исправлено, потому что содержимое массива было в порядке, но десятичная точка имела неправильный символ. Удаление упомянутой выше опции компилятора устранило проблему. Итак, вопрос в том, что эта опция компилятора делает точно и что является неправильным ее использованием?