这个错误的含义是否容易解释?
错误:请求'* printerInfo'中的成员'Attributes',即 指针类型'PPRINTER_INFO_2 {aka _PRINTER_INFO_2A *}'(也许你 意思是使用' - >' ?)
PPRINTER_INFO_2* printerInfo = NULL;
void ChangedPrinter()
{
...
DWORD attributesPrinterInfo;
printerInfo = (PPRINTER_INFO_2*) malloc(bufferSize);
attributesPrinterInfo = printerInfo->Attributes; // error
free(printerInfo);
}
我做错了什么???
答案 0 :(得分:9)
PRINTER_INFO_2结构定义为:
typedef struct _PRINTER_INFO_2 {
// ...
} PRINTER_INFO_2, *PPRINTER_INFO_2;
所以PPRINTER_INFO_2
是指向PRINTER_INFO_2
的指针。当你这样做
printerInfo = (PPRINTER_INFO_2*) malloc(bufferSize);
printerInfo
实际上成为指向PRINTER_INFO_2
指针的指针。我不确定这是出于意图还是只是一个错误,但如果它是PPRINTER_INFO_2*
,那么正确使用是:
(*printerInfo)->Attributes
答案 1 :(得分:0)
对于Cpp, 看到这个https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91138
建议->在已经使用时没有帮助。正确的解决方法是建议(* pp)->成员