ARM 8.50 的 IAR EW 和 C++ 中的古怪字符数组文字行为
IAR EW for ARM 8.50 and oddball char array literal behavior in C++
当我声明一个特定的字符串时,我在 IAR EW for ARM 8.50 中发生了一些奇怪的 constant/literal 生成:
const char g_string[]="?????-??";
当我在调试器中查看它时,它实际上在内存中生成以下内容:
???~??
如果我像这样分解字符串:
const char g_string[]="?????""-??";
我得到 expected/desired 输出:
?????-??
我 运行 是否违反了某些已知标准?或者这是 IAR 特定的错误?
FWIW,使用 MSVC 和 Xtensa/Clang 生成的文字不需要这种奇怪的方式来获得预期的八个字符。
编辑:
const char g_string[]=R"foo(?????-??)foo";
似乎在内存中生成了相应的字符,所以可能是字符编码问题?
我发现了我的问题,它对美国程序员来说相当晦涩难懂。
三字母组:
我想 IAR 默认启用了它们,而我使用的其他编译器则没有。
祝您在 google 上搜索“带有 ???”的字符串文字好运
当我声明一个特定的字符串时,我在 IAR EW for ARM 8.50 中发生了一些奇怪的 constant/literal 生成:
const char g_string[]="?????-??";
当我在调试器中查看它时,它实际上在内存中生成以下内容:
???~??
如果我像这样分解字符串:
const char g_string[]="?????""-??";
我得到 expected/desired 输出:
?????-??
我 运行 是否违反了某些已知标准?或者这是 IAR 特定的错误?
FWIW,使用 MSVC 和 Xtensa/Clang 生成的文字不需要这种奇怪的方式来获得预期的八个字符。
编辑:
const char g_string[]=R"foo(?????-??)foo";
似乎在内存中生成了相应的字符,所以可能是字符编码问题?
我发现了我的问题,它对美国程序员来说相当晦涩难懂。
三字母组:
我想 IAR 默认启用了它们,而我使用的其他编译器则没有。
祝您在 google 上搜索“带有 ???”的字符串文字好运