Нет, это не платформо-независимый код C.Стандарт C не требует определения int32_t
и uint32_t
.
Я подозреваю, что вы на самом деле не заботитесь о независимом от платформы коде C для всех реализаций, хотя, я подозреваю, вы заботитесь только о коде Cэто будет работать на платформах, которые вас интересуют, но я не знаю, какие реализации вас интересуют.
Предполагая, что int32_t
и uint32_t
существуют:
Использование преобразования указателя для доступа кТип без знака, как если бы это был соответствующий тип со знаком, или наоборот, является допустимым.int32_t
- это тип со знаком, соответствующий uint32_t
.Как отмечает @rici, на практике это не просто верно, это жесткое требование.
В то же время это неоправданно сложно.На распространенных в настоящее время платформах простое прямое приведение от uint32_t
до int32_t
или наоборот, без каких-либо хитростей с указателями, потребует нулевых инструкций во время выполнения и выполнит в точности то, что вы уже ожидали.