gpt4 book ai didi

c++ - VS Intellisense 显示某些(不是全部)字节常量的转义字符

转载 作者:行者123 更新时间:2023-11-30 19:57:32 25 4
gpt4 key购买 nike

在 Visual Studio C++ 中,我定义了一系列十进制值从 0 到 15 的 channel ID 常量。我将它们设为 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”,但智能感知将其显示为空格字符。

  1. 为什么 8 位无符号整数总是被视为字符,无论我如何尝试将其定义为数值?

  2. 为什么这些字符中只有部分而非全部显示为其 ASCII 等效项的转义符号,而其他字符则显示为八进制表示形式?

  3. 所使用的晦涩符号的起源是什么?例如,十进制 7 的“\a”与 ISO 定义的 Control0 集相匹配,后者具有 unicode 表示形式 - 但十进制 9 应该显示“\t”。 Wikipedia C0 control codes

  4. 有没有办法让智能感知悬停提示显示此类常量的数值而不是字符表示?装饰? VS 设置?类型定义? #定义?

最佳答案

您误读了智能感知。 0x7 = '\a' 不是文字字符 'a'。 '\a' 是铃声/闹钟。

请参阅以下有关转义序列的文章 - https://en.wikipedia.org/wiki/Escape_sequences_in_C

关于c++ - VS Intellisense 显示某些(不是全部)字节常量的转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43467595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com