3

这个错误的含义有一个简单的解释吗?

错误:在“* printerInfo”中请求成员“属性”,它的指针类型为“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);
    }

我究竟做错了什么???

4

2 回答 2

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
于 2013-02-19T19:07:03.240 回答
0

对于 Cpp,请参阅此https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91138

建议 -> 在已经使用它时没有帮助。正确的解决方法是建议 (*pp)->member

于 2020-07-09T08:45:31.583 回答