我想知道为什么一些函数有一些参数必须设置为NULL,因为这些参数是“保留参数”。例如:
LONG WINAPI RegQueryValueEx(
__in HKEY hKey,
__in_opt LPCTSTR lpValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_opt LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);我不明白为什么lpReserved会存在?我的意思是,如果它是保留的,为什么把它放进去,直接省略它不是更简单吗?
谢谢!:) (请不要理会我的英语。)
发布于 2010-12-09 05:29:29
我认为至少有两个原因。
一种可能是该参数是为将来使用和可能的功能扩展保留的。确保将其设置为NULL可以在某种程度上保证将来添加新功能时不会破坏旧程序。
第二个可能的原因是这个参数实际上可以作为私有API的一部分在内部使用,而API的公共部分规定将这个参数设置为NULL。
为什么不完全省略它呢?以后在不改变界面的情况下扩展系统的功能要容易得多。它与旧的API保持二进制和源代码兼容,不需要重新构建旧的软件。
https://stackoverflow.com/questions/4392454
复制相似问题