c++ - 常量的 k 前缀从何而来?

标签 c++ objective-c c prefix hungarian-notation

常量以 k 为前缀是很常见的做法(例如 k_pi)。但是k是什么意思呢?

难道只是c已经表示char了吗?

最佳答案

这是一个历史上的怪事,在喜欢盲目应用他们不理解的编码标准的团队中仍然很常见。

很久以前,大多数商业编程语言都是弱类型的;我们现在认为理所当然的自动类型检查仍然主要是一个学术话题。这意味着很容易编写带有类别错误的代码;它会编译并运行,但会以难以诊断的方式出错。为了减少这些错误,一个名为 Simonyi 的小伙子建议您在每个变量名称的开头使用一个标记来指示其(概念)类型,以便在它们被误用时更容易发现。由于他是匈牙利人,这种做法被称为“匈牙利符号”。

一段时间后,随着类型语言(尤其是 C)变得越来越流行,一些白痴听说这是个好主意,但不明白它的目的。他们建议为每个变量添加冗余标签,以指示其声明的类型。它们的唯一用途是更容易检查变量的类型;除非有人更改了类型并忘记更新标签,在这种情况下他们是有害的。

第二种(无用的)形式更容易描述和执行,因此被许多团队盲目采用;几十年后,你仍然会看到它不时被使用,甚至被提倡。

"c"是 "char"类型的标记,因此它不能也用于 "const";所以选择了“k”,因为它是德语中“konstant”的第一个字母,并且广泛用于数学中的常数。

关于c++ - 常量的 k 前缀从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5016622/

相关文章:

c++ - 实现自己的 memcpy(大小以字节为单位?)

c++ - QTreeWidget中如何获取拖放操作的source dragged

objective-c - 如何确定用户是否在 Mac 上设置了密码?

c++ - 在不同的线程上发送和接收

c - 如何在 Xcode 中使用带有 -ansi -pedantic 的 gcc 进行编译?

c++ - 错误 C2280 : attempting to reference a deleted function (unique_ptr)

c++ - SDL2 根本没有收到任何事件

ios - 未调用 Afnetworking 委托(delegate)方法

C:使用 scanf() 函数而不是 gets

c++ - 在 C 和 C++ 中将 C 字符串转换为大写