首页 > 解决方案 > 在没有联合的情况下解决从整数到较小指针的转换警告

问题描述

当我做这个任务时:

const uint8_t *p = (uint8_t *)(uint64_t address);

我明白了

conversion from integer to smaller pointer warning 

所以我想从一个 uint64_t 整数中保存一个 uint8_t 指针。我不能修改这两种类型。

LE:所以整个代码看起来像这样

typedef token{
const uint8_t *pTr;
}token;

typedef key{
uint64_t srcAddress;
}key;

在一个将两个结构的指针作为输入的函数中,我想做:

token->pTr = key->srcAddress

标签: cpointers

解决方案


如果你的程序中有一个 uint64_t 变量,那么正确的做法是:

uint64_t address = ...;
const uint8_t *p = (uint8_t *)(&address);

记住 cpu 的字节序也是一个好主意。


推荐阅读