簡體   English   中英

關於不兼容的指針類型的警告

[英]Warning about incompatible pointer types

我不了解我的代碼的警告。 看起來很簡單,但我簡單地不明白。 這是有問題的代碼:

chunk* findChunk(chunk *ptr, int size)
{
    ...
    chunk *newNode = ptr->end + size;
    ...
}

塊是我之前定義的結構:

typedef struct chunk
{
    int size;
    int available;
    struct chunk* next;
    char end[1];
} chunk;

這是我收到的警告:

warning: initialization from incompatible pointer type [enabled by default]<br>
chunk *newNode = ptr->end + size;

我無法理解,對我來說很明顯newNode和ptr是同一類型。 我想念什么? 感謝大伙們。

當將兩個已聲明為指向不同類型的指針等同時,就會出現不兼容的警告類型。 這是允許的,因為作為編碼人員,您也許知道它會起作用,但是通常不會起作用,這就是為什么您會收到警告。

在代碼中,您已將struct的end字段定義為類型為char *的1x1 char數組,但是在您的第一個代碼段中,您試圖將其與chunk *等同。 從您的代碼看來,您可能打算使用next而不是end

另外,除非您絕對確定自己在做什么,否則我強烈建議不要將整數添加到指針。 即便如此,也可能有更安全,更好的方法來實現您的嘗試。

另外,為什么還要用單個元素創建一個char數組? 我覺得這很奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM