Я занимаюсь разработкой приложения, которое будет в основном использоваться английскими и испанскими читателями. Однако в будущем я хотел бы иметь возможность поддерживать более расширенные языки, такие как японский. Размышляя о дизайне программы, я столкнулся со стеной в UTF-8 против UTF-16 против многобайтовых. Я хотел бы скомпилировать свою программу для поддержки UTF-8 или UTF-16 (для случаев, когда используются такие языки, как китайский). Чтобы это произошло, я думал, что у меня должно быть что-то вроде
#if _UTF8
typedef char char_type;
#elif _UTF16
typedef unsigned short char_type;
#else
#error
#endif
Таким образом, в будущем, когда я использую UTF-16, я могу переключать #define (и, конечно, иметь такой же тип # if / # endif для таких вещей, как sprintf
и т. Д.). У меня есть свой собственный строковый тип, так что я бы тоже использовал этот случай.
Будет ли считаться «плохой идеей» замена каждого использования только одного использования «char» моим «char_type» с использованием сценария, упомянутого выше? Если так, то почему это считается плохой идеей и как я могу достичь того, что упомянул выше?
Причина, по которой я хотел бы использовать одно или другое, связана с эффективностью памяти. Я бы предпочел не использовать UTF-16 все время, если я его не использую.