c++ - 将指针传递给压缩结构成员时发出警告
问题描述
我想将对packed
结构的引用传递给函数。不幸的是,编译器(gcc 9.3.0)不喜欢我的想法并抱怨指针未对齐。我明白这意味着什么,但我不知道如何解决它。
struct map {
...
int32_t xy;
...
} __attribute__((__packed__));
void Test::write(int32_t* addr, const int32_t &value) {
int64_t beval = htobe64(value);
memcpy(addr, &beval, sizeof(beval));
}
int32_t val32 = 123;
write(&map.xy, val32);
warning: taking address of packed member of ‘Test::map’ may result in an unaligned pointer value [-Waddress-of-packed-member]
xx | write(&map.xy, val32);
| ^~~~~~~~~~~~~~~~
解决方案
我不知道如何解决它。
不要接受它的地址,不要打包map
,或者接受你的程序可能有未定义的行为。
推荐阅读
- java - 带有构造函数参数的 Spring 组件
- javascript - Node.js execa:如何完成写入进程的标准输入
- jenkins - 向 Jenkins 共享库提供参数
- angular - 如何在 Angular 中动态添加 plotOptions[]
- powershell - Powershell 将日期更改为 dd/mm/yyyy hh:ss 格式,然后更改为字符串
- scala - 将结构字段与另一列 Spark 进行比较
- c++ - 使用 fstream 将文件逐行读取到 C++ 中的二维向量中
- javascript - Google API 客户端无法初始化 Cloud Endpoints API
- php - 未定义的索引错误PHP,验证不起作用
- c# - 加入表然后传递给视图(实体框架)