ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
由于在将诸如 \n 和 \t 之类的 C 字符串转义符用于 C/C++ 程序中的字符串常量之前,这些符号不会转换为十六进制字符 0x0A 和 0x09,因此其值为字符串的 C 宏无法在程序集替换符号中按预期表示。例如:
#define MSG "\tHI\n"
becomes, in assembly:
.define """\tHI\n""",MSG ; 6 quoted characters! not 5!
用在 C 字符串上下文中时,您希望将该语句转换为 5 个字符(制表符、H、I、换行符、NULL),但 .string 汇编器指令不知道如何执行 C 转义转换。
您可以像使用 C/C++ 一样,使用 .cstring 指令正确处理转义序列和 NULL 终止。将上述符号 MSG 与 .cstring 指令一同使用会导致分配 5 个字符的存储空间,这与在 C/C++ 强上下文中使用的结果相同。(有关 .cstring 指令语法,请参阅节 13.4.7。)