在 Visual Studio C++ 中,我定义了一系列具有从 0 到 15 的十进制值的 channelID 常量。我将它们设为 uint8_t 类型,原因与它们在运行此代码的嵌入式上下文中的使用方式有关。
当悬停在这些常量之一上时,我希望智能感知向我显示常量的数值。相反,它向我展示了字符表示。对于某些非打印值,它显示一个转义字符,表示某个 ASCII 值,而对于其他值,它显示该字符的转义八进制值。
const uint8_t channelID_Observations = 1; // '\001'
const uint8_t channelID_Events = 2; // '\002'
const uint8_t channelID_Wav = 3; // '\003'
const uint8_t channelID_FFT = 4; // '\004'
const uint8_t channelID_Details = 5; // '\005'
const uint8_t channelID_DebugData = 6; // '\006'
const uint8_t channelID_Plethysmography = 7; // '\a'
const uint8_t channelID_Oximetry = 8; // 'b'
const uint8_t channelID_Position = 9; // ' ' ** this is displayed as a space between single quotes
const uint8_t channelID_Excursion = 10; // '\n'
const uint8_t channelID_Motion = 11; // '\v'
const uint8_t channelID_Env = 12; // '\f'
const uint8_t channelID_Cmd = 13; // '\r'
const uint8_t channelID_AudioSnore = 14; // '\016'
const uint8_t channelID_AccelSnore = 15; // '\017'
一些转义代码很容易识别,十六进制或十进制等效代码很容易记住(\n == newline == 0x0A)
,但其他的则比较晦涩难懂。例如十进制 7 显示为 '\a',在某些系统中表示 ASCII BEL 字符。
一些表示对我来说很神秘——例如十进制 9 将是一个 ASCII 制表符,今天通常显示为 '\t',但智能感知将其显示为一个空格字符。
为什么 8 位无符号整数总是被视为字符,无论我如何尝试将其定义为数值?
为什么这些字符中只有一些但不是全部显示为 ASCII 等价物的转义符号,而其他字符则使用八进制表示?
使用的晦涩符号的起源是什么?例如,十进制 7 的 '\a' 与 ISO 定义的 Control0 集相匹配,它具有 unicode 表示 - 但是十进制 9 应该显示 '\t'。维基百科 C0 控制代码
有没有办法让智能悬停提示向我显示这些常量的数值而不是字符表示?装饰?VS设置?类型定义?#定义?