Получение ошибки времени компиляции при приведении типа к переменной void * pointer для unsigned int в uint32 - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь типизировать значение от void * типа до uint32, но получаю ошибку после компиляции:

ошибка: приведение от указателя к целому числу другого размера

1 Ответ

0 голосов
/ 04 июня 2018

Стандарт C говорит следующее: C11 6.3.2.3/6:

Любой тип указателя может быть преобразован в целочисленный тип.За исключением случаев, указанных ранее, результат определяется реализацией.Если результат не может быть представлен в целочисленном типе, поведение не определено.Результат не обязательно должен находиться в диапазоне значений любого целочисленного типа.

Это означает, что от компилятора зависит, что произойдет в данной системе.Очевидно, ваш конкретный компилятор считает, что результат не может быть представлен, и поэтому выдает диагностическое сообщение.

Вместо этого вы должны привести к uintptr_t.Этот тип гарантированно будет достаточно большим, чтобы содержать значение указателя объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...