当我阅读STM32示例代码时,我看到了许多以uw
开头的变量。例如:
static __IO uint32_t uwLsiFreq = 0;
__IO uint32_t uwCaptureNumber = 0;
__IO uint32_t uwPeriodValue = 0;
__IO uint32_t uwMeasurementDone = 0;
一切都有背后的意义或故事。 uw
在这里意味着什么?
示例来源:STM32Cube_FW_F2_V1.7.0 / Projects / STM32F207ZG-Nucleo / Examples / IWDG / IWDG_Example / Src / main.c。
Download link - >点击"获取软件" " STM32CubeF2"旁边的按钮。
答案 0 :(得分:2)
好吧,我想发表自己的,更完整的答案。感谢@njuffa在我的问题下面的评论中指出"可能:uw
代表' unsigned word'某种Hungarian notation,"感谢@ PeterJ_01 pointing out,Stack Overflow的首席执行官对此事有一些看法,感谢@Sigve Kolbeinson在PeterJ_01的回答中指出Stack Overflow的首席执行官#39他的名字是乔尔·斯波尔斯基(在链接中找到),他实际上并不讨厌匈牙利的符号,而只是打乱了它的有限和腐败的形式[系统匈牙利语]有一段时间的牵引力,并给予我们实际的link to the article所以我们可以了解更多并自己阅读这篇文章。
uw
在许多STM32示例变量的开头肯定必须在逻辑上表示"无符号字,"其中一个"字"在这种情况下是32位。在阅读代码时,了解这一点会增加很多清晰度,并消除对名称的一些混淆,所以我很高兴知道这一点。
在这种情况下,这是一种系统匈牙利语用法,对于具有明确类型的语言(例如C和C ++),经常不鼓励这样做,因为它是多余的并且几乎没有增加值。将此与我在下面描述的 Apps匈牙利对比,Joel Spolsky(Stack Overflow的首席执行官)strongly promotes作为一种帮助使错误的代码看起来错误的方法。&#34 ;
unsigned long myVar
现在变为unsigned long ulMyVar
。大多数人似乎认为这是有限的使用或完全没有价值。 Joel Spolksy不是这种形式的匈牙利符号as indicated in his article的支持者,但他强烈 Apps匈牙利风格。其他意见可以在"Notable opinions" section of the Wikipedia article here中找到。 us
来表示" 你 nsafe s tring"和s
表示"安全 s tring"。许多人要么对这种方法感到更加中立,要么喜欢并推广它。 Joel Spolsky(Stack Overflow的首席执行官)和Steve McConnel都认为这是一个好主意并促进其使用。请注意,此处摘录自Joel's article:
有人在某处阅读过Simonyi的论文,在那里他使用了“type”这个词,并认为他的类型就像类一样,类似于类型系统,就像编译器所做的类型检查一样。他没有。他非常仔细地解释了“类型”一词的含义,但没有帮助。损坏已经完成。
Apps匈牙利有非常有用,有意义的前缀,如“ix”表示数组的索引,“c”表示计数,“d”表示两个数字之间的差异(例如“dx”表示“宽度”),依此类推。
系统匈牙利语 远没有那么有用的前缀,如“l”表示长,“ul”表示“unsigned long”,“dw”表示双字,即实际上,呃,一个无符号长。在匈牙利语系统中,前缀告诉您的唯一内容是变量的实际数据类型。
这是对西蒙尼的意图和实践的一种微妙但完全的误解......
(强调补充)
答案 1 :(得分:1)
这意味着此命名约定中的无符号字。现在几乎没有用过。但有些人喜欢它,因为它向他们展示了变量的类型。另一个人讨厌这是最糟糕的编程习惯之一(包括Stack Overflow的创建者)。 IMO没关系