在C++/C,你可以这样做:LLVM-IR数组指针赋值
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 *。如果这是可能的,我有点困惑如何继续。
提前致谢。
UPDATE:
好的,如果我代替添加* B和初始化C [0],C [1],它会为LLVM-IR/C/C的答案改变+ +?
是的,固定的。谢谢。 – redratio1
假设你修复了关于不初始化'* B'和'C [0]'和'C [1]'的位,所有这些都是采用'B指向的'unsigned int'(或'int') '或'C',将其截断为'char'大小,并将其分配给'A'数组中的一个槽。假如你不忽略所有警告,但是由于整型之间的标准转换,这应该是合法的,如果有些可疑的话,你应该得到一个关于精度损失的警告...... – twalberg
@twalberg;谢谢,这是有道理的/我假设,因为有连续的内存,我可以放弃将更大的类型放入数组。并且将这些位扩展到A的分配。 – redratio1