下面是 SystemTimeToTzSpecificLocalTime 的函数原型:
BOOL SystemTimeToTzSpecificLocalTime(
[in, optional] const TIME_ZONE_INFORMATION *lpTimeZoneInformation,
[in] const SYSTEMTIME *lpUniversalTime,
[out] LPSYSTEMTIME lpLocalTime
);
正如您所看到的,第二个和第三个参数都是指向 SYSTEMTIME 结构的指针,因此至少从静态类型检查的角度来看,应该可以为这两个参数传递相同的指针。
然而,该文档没有说明这样做是否安全。
在我的测试中,我发现为两个参数传递相同的指针确实可以按预期工作。该函数确实修改了 SYSTEMTIME 结构,并且输出是正确的。
这是一个简单的例子:
#include <windows.h>
void main() {
SYSTEMTIME tm;
GetSystemTime(&tm);
SystemTimeToTzSpecificLocalTime(NULL, &tm, &tm);
wprintf(L"Local Time: %02d:%02d:%02d\n", tm.wHour, tm.wMinute, tm.wSecond);
}
我的问题是:为两个参数传递相同的指针是否安全?或者我应该使用新的 SYSTEMTIME 结构来输出?
我在文档中找不到有关此内容的任何信息。 ( https://learn.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-systemtimetotzspecificiallocaltime )
谢谢!