在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