CPP中的字符串变量的sz前缀是什么意思
看 UltraVNC 的 C++ 源码时,发现很多字符串变量都带着 sz 前缀。查了下才搞明白,这个代表以零结尾的字符串(zero-terminated string),也算是复习了一把经典的匈牙利命名法。
背景介绍
在最近参与的一个VNC远程控制项目中,我接触到了UltraVNC的源码。该项目采用了UltraVNC的定制版本作为服务端,配合Apache Guacamole作为客户端,实现了浏览器端的远程桌面控制功能。
发现命名惯例
在深入研究UltraVNC源码时,我注意到了一个有趣的命名模式:几乎所有的字符串变量都以"sz"作为前缀,例如:
char* szCmdLine = szCmdLine2;"sz"前缀的由来
通过查阅资料,我在StackExchange上找到了答案:
"sz"代表"zero-terminated string"(以零结尾的字符串)。这个命名约定源于:
- C/C++中的字符串默认以空字符'\0'结尾
- "sz"是"string zero"的缩写
- 这种命名法属于匈牙利命名法的一种应用
So many books,so little time