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 上搜索“带有 ???”的字符串文字好运