错误:请求成员(也许你打算使用' - >'?)同时使用' - >'

msa*_*ago 3 c++ syntax pointers compiler-errors dynamic-allocation

这个错误意味着什么?

错误:请求'*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);
    }
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么???

Lih*_*ihO 9

PRINTER_INFO_2结构定义为:

typedef struct _PRINTER_INFO_2 {
  // ...
} PRINTER_INFO_2, *PPRINTER_INFO_2;
Run Code Online (Sandbox Code Playgroud)

所以PPRINTER_INFO_2是指针PRINTER_INFO_2.当你这样做

printerInfo = (PPRINTER_INFO_2*) malloc(bufferSize);
Run Code Online (Sandbox Code Playgroud)

printerInfo实际上成为指向指针的指针PRINTER_INFO_2.我不确定这是出于意图还是只是一个错误,但是如果它的意图是PPRINTER_INFO_2*正确的用法是:

(*printerInfo)->Attributes
Run Code Online (Sandbox Code Playgroud)