我想知道什麼是使用簡單整數和memsize的正確方法?更確切地說,我有一個最初爲32位體系結構編寫的C代碼。現在,它已經運行到兩個架構,所以有明顯的理由得到以下警告,在64位架構上運行的使用簡單整數和memsize的正確方法
warning: cast to pointer from integer of different size
我想刪除使用memsize個,intptr_t
和uintptr_t
這些警告的同時。但是如果我們使用混合的簡單整數和memsize,我懷疑它是否正常工作。我想知道使用它的正確方法。以下是代碼示例。
compllits = list_Cons((POINTER) predindex, compllits);
這裏compllits
是一個鏈表並且被定義爲pointer
。 list_Cons
返回指針。 list_Cons
被定義爲:
list_Cons(POINTER x, LIST y);
而且,int preindex
。我將整型轉換爲指針。正如我在64位機上運行,我會得到警告
: warning: cast to pointer from integer of different size
我們解決此警告,我在我使用這兩種方法混淆liitle位,
Method 1: changing the int preindex into intptr_t preindex.
Method 2. Keeping int preindex unchanged but doing following
compllits = list_Cons((POINTER)(intptr_t)predindex, compllits);
無論是方法正在工作。但我不確定哪種方法合法和最好? 尋找一些建議。
謝謝
我正在使用** intptr_t **,以便根據基礎確定整數的大小的硬件架構,我不會得到我在問題中提到的警告。 – thetna 2011-04-22 17:28:31