好的,我想发布我自己的更完整的答案。感谢@njuffa 在我的问题下方的评论中指出“可能:uw
代表某种匈牙利符号中的'未签名单词' ”,感谢@PeterJ_01指出Stack Overflow 的首席执行官对此事有一些看法,并感谢@Sigve Kolbeinson 在 PeterJ_01 的回答下的评论中指出 Stack Overflow 的 CEO 的名字是 Joel Spolsky(如链接中所示),他实际上并不讨厌匈牙利符号,而只是对有限的它的损坏形式 [Systems Hungarian] 获得了一段时间的关注,并为我们提供了文章的实际链接,以便我们可以了解更多信息并自己阅读文章。
1.这是我回答我的问题的结论:
uw
在许多 STM32 示例变量的开头,当然必须在逻辑上表示“无符号字”,在这种情况下,“字”是 32 位。当我阅读代码时,知道这一点会增加很多清晰度,并消除对名称的一些混淆,所以我很高兴知道这一点。
在这种情况下,这是系统匈牙利语的一种用法,对于具有显式类型的语言(例如 C 和 C++)通常不鼓励使用,因为它是多余的并且几乎没有增加价值。将其与我在下面描述的Apps Hungarian进行对比,Joel Spolsky(Stack Overflow 的首席执行官)大力宣传它是一种帮助“错误代码看起来不正确”的方法。
2. 以下是我从@Sigve 和@njuffa 通过他们的评论和他们提供的链接学到的一些额外见解(主要是关于匈牙利符号):
您可能只是将此部分称为“计算机编程中的匈牙利符号到底是什么?”
- 存在匈牙利符号(我以前不知道),是指在每个变量和/或函数名称的开头添加一些额外字符的概念,以提供有关变量或函数的附加信息,例如其用途,它的类型,或者它的返回类型。
- 无意中这也回答了我关于 FreeRTOS 命名约定的问题。现在我知道了!他们也使用[主要是系统]匈牙利符号。这里有一些链接。请注意,在第一个链接中,您将看到 FreeRTOS 中所有匈牙利符号用法的列表。这种表示法几乎完全是 Systems Hungarian 表示法,但是当他们指定在函数或宏名称中定义函数和宏
的文件的名称时,可以说也使用了一点 Apps Hungarian 表示法。
- 匈牙利符号有两种主要形式:Systems Hungarian和Apps Hungarian。在这里查看它们的差异。
- Systems Hungarian本质上是对“匈牙利”符号的原始意图的破坏,该符号的创建者查尔斯西蒙尼在他的描述中错误地使用了“类型”一词而不是“种类”(来源)。Charle 的初衷是将附加信息编码为编程语言本身不固有的变量名。但是,Systems Hungarian表示法基本上表示将变量的类型存储到变量名中。例如:
unsigned long myVar
现在变成unsigned long ulMyVar
. 大多数人似乎认为这是有限的使用或完全没有价值。Joel Spolksy不支持这种形式的匈牙利符号,,但他强烈支持Apps Hungarian 风格。其他意见可在此处的 Wikipedia 文章的“重要意见”部分中找到。
- Apps Hungarian描述了将附加信息存储到变量名称前面的概念,否则这些信息不容易推断出来,例如
us
用于表示“不安全的字符串”和s
表示“安全的字符串”。许多人要么对这种方法感到更中立,要么喜欢并推广它。Joel Spolsky(Stack Overflow 的 CEO)和 Steve McConnel 都认为这是一个好主意并推广它的使用。
请注意,这是Joel 文章的有用摘录:
有人在某处读过 Simonyi 的论文,他在其中使用了“类型”一词,并认为他的意思是类型,就像类,就像在类型系统中一样,就像编译器所做的类型检查一样。他没有。他非常仔细地解释了他所说的“类型”这个词的确切含义,但这并没有帮助。损害已经造成。
Apps 匈牙利语有非常有用且有意义的前缀,例如“ix”表示数组的索引,“c”表示计数,“d”表示两个数字之间的差(例如“dx”表示“宽度”),等等。
系统匈牙利语的前缀用处不大,例如“l”代表 long,“ul”代表“unsigned long”,“dw”代表双字,实际上,呃,一个 unsigned long。在 Systems Hungarian 中,前缀告诉您的唯一信息是变量的实际数据类型。
这是对西蒙尼的意图和做法的微妙但完全的误解……
(重点补充)