Я хотел бы знать, как правильно использовать простые целые и средние размеры? Если быть точным, у меня есть код на C, изначально написанный для 32-битной архитектуры.Теперь он должен работать в обеих архитектурах, поэтому есть очевидная причина получить следующее предупреждение при работе в 64-битной архитектуре
warning: cast to pointer from integer of different size
Я пытаюсь удалить эти предупреждения, используя memsize, intptr_t
и uintptr_t
.Но я сомневаюсь, что это работает правильно, если мы используем смешанное простое целое число и memsizes.Я хотел бы знать, как правильно его использовать.Ниже приведен пример кода.
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
Теперь, чтобы устранить это предупреждение, я немного запутался в двух используемых мной методах,
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);
Оба способа работают.Но я не уверен, какой метод является законным и лучшим?Нужны некоторые предложения.
Спасибо