【发布时间】:2014-04-30 11:20:43
【问题描述】:
unsigned char data[] =
{
0, 0, 0, 0, 0,
0, 0, 0, 0, 0
};
*((int*) &data[1]) = 0x00256;
这给出了警告(见下文)我可以删除这个没有破坏代码的东西吗?通过中断,即,如果我转换为unsigned char*,我实际上将复制比我正在寻找的更少的字节(不是所有 32 位整数),对吧?
警告:从 'unsigned char *' 转换为 'int *' 需要增加 从 1 到 4 对齐 [-Wcast-align]
【问题讨论】:
-
如果您认为该警告不重要,那么您可能以前从未编写过 SPARC。并且您将文字分配给
int取消引用。不管你喜不喜欢,你都在移动sizeof(int)bytes somewhere。 -
但我真的很想移动
sizeof(int)。我想通过代码具体删除这个警告,但我认为这是不可能的
标签: c++ memory-management alignment clang