我想知道为什么有些函数有一些参数由于“保留参数”而必须设置为 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 存在?我的意思是,如果它是保留的为什么要放它,直接省略它不是更简单吗?
谢谢! :)(请不要注意我的英语..)
我认为至少有两个原因。
一种是保留该参数以供将来使用和可能的功能扩展。确保它设置为NULL
可以在某种程度上保证将来添加新功能时不会破坏旧程序。
第二个可能的原因是该参数实际上可以在内部用作私有 API 的一部分,而 API 的公共部分则要求将此参数设置为NULL
.
为什么不完全省略它呢?以后在不改变接口的情况下扩展系统的功能要容易得多。它保持与旧 API 的二进制和源代码兼容,并且不需要重建旧软件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)