3

このエラーの意味を簡単に説明できますか?

エラー: '* 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);
    }

私は何を間違っていますか???

4

2 に答える 2

9

PRINTER_INFO_2 structure is defined as:

typedef struct _PRINTER_INFO_2 {
  // ...
} PRINTER_INFO_2, *PPRINTER_INFO_2;

so PPRINTER_INFO_2 is pointer to PRINTER_INFO_2. When you do

printerInfo = (PPRINTER_INFO_2*) malloc(bufferSize);

printerInfo actually becomes a pointer to pointer to PRINTER_INFO_2. I'm not sure whether this was an intention or just a mistake, but if it's intended to be PPRINTER_INFO_2* then proper usage is:

(*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 に答える