C++/C에서 당신은이 작업을 수행 할 수 있습니다이 LLVM-IR에 가능했던 경우 궁금 해서요, 또는 즉시 유형의 문제로 불평 것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.
. 이것에 대해 잠수하려고했지만,이 특별한 예를 시도해 본 사람이 있는지 알았을 것이라고 생각했습니다. 나는 GEP A가 i8 *으로 0 번째 위치를, 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