간단한 정수와 memsize를 사용하는 올바른 방법은 무엇입니까? 정확히 말하면 저는 32 비트 아키텍처 용으로 처음 작성된 C 코드가 있습니다. 지금은 모두 아키텍처에 실행할 수있다, 그래서 나는 memsize와, intptr_t
및 uintptr_t
를 사용하는 경고를 제거하기 위해 노력하고간단한 정수와 memsize를 사용하는 올바른 방법
warning: cast to pointer from integer of different size
64 비트 아키텍처에서 실행하는 동안 다음과 같은 경고를 얻을 수있는 명백한 이유가있다. 하지만 우리가 혼합 된 단순한 정수와 memsize를 사용한다면 제대로 작동한다면 의심 스럽습니다. 나는 그것을 사용하는 적절한 방법을 알고 싶다. 다음은 코드 샘플입니다. 여기
compllits = list_Cons((POINTER) predindex, compllits);
compllits
는 링크 된리스트이며 pointer
으로 정의된다. list_Cons
포인터를 반환합니다.
list_Cons(POINTER x, LIST y);
그리고, int preindex
: list_Cons
는 다음과 같이 정의된다. 포인터를 정수로 변환합니다. 내가 64 비트 컴퓨터에서 실행, 나는이 경고를 해결하려면 경고
: warning: cast to pointer from integer of different size
을 얻을 것이다, 나는
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);
모두를 내가 사용하고있는 두 가지 방법에 혼란 liitle 비트입니다 방법이 효과적이다. 그러나 어느 방법이 합법적이고 최선인지 확실하지 않습니다. 몇 가지 제안을 찾고 있습니다.
감사합니다.
** intptr_t **를 사용하면 정수 크기가 기준에 따라 결정됩니다 하드웨어 아키텍처에 대해 언급하고 나는이 질문에서 언급 한 경고를 얻지 못할 것이다. – thetna