我正在努力摆脱以下代码的夹板警告:
void GetPrinterInfo(HANDLE hPrinter){
PRINTER_INFO_4* pPrinterInfo = NULL;
DWORD bytesNeeded;
GetPrinter(hPrinter, 4, NULL, 0, &bytesNeeded);
pPrinterInfo = malloc(bytesNeeded);
if (GetPrinter(hPrinter, 4, (LPVOID)(pPrinterInfo), bytesNeeded, &bytesNeeded)){
printf("Printer name: %S", pPrinterInfo->pPrinterName);
}
free(pPrinterInfo);
}
警告是(在“printf”行):
定义前使用的字段 pPrinterInfo->pPrinterName
1> 使用的右值在某些执行时可能未初始化为值
大概它假设pPrinter
尚未填充。我试过SetPrinter
用/*@out@*/
s 等标记标题定义,但它没有帮助。我在头文件中尝试了一堆注释,例如/*@temp@*/
,/*@dependent@*/
无济于事。
我如何明智地让夹板知道 pPrinter 字段在调用后应该是有效的GetPrinter
?