在 C++/C 中,您可以这样做:
unsigned char A[12];
unsigned int *B;
int *C;
B = malloc(sizeof(unsigned int));
C = malloc(2*sizeof(int));
A[0] = *B;
A[4] = *C;
//Then go on to access A byte by byte.
我想知道这在 LLVM-IR 中是否可行,或者它会立即抱怨类型问题。正要深入研究这个,但我想看看是否有人尝试过这个特定的例子。我会将 GEP A 的第 0 个位置作为 i8*,然后将 B 和 C 作为 i32*。如果可能的话,我对如何进行有点困惑。
提前谢谢。
更新:
好的,如果我改为为 *B 和 C[0]、C[1] 添加初始化,LLVM-IR /C / C++ 的答案会改变吗?