Предположим, у меня есть два указателя на глобальный массив, оба представлены как «адрес массива плюс некоторое смещение». Каков правильный подход к вычислению разницы указателей, чтобы ее можно было использовать для инициализации глобальной переменной?
Обновление: Я также хочу, чтобы разница указателей была константа времени компиляции, если два указателя указывают на локальный массив или на члены одной и той же структуры.
В моей первой попытке я использовал
Код: Выделить всё
CreatePtrDiffКод: Выделить всё
llvm::ConstantКод: Выделить всё
llvm::ConstantExprКод: Выделить всё
pointer1Код: Выделить всё
pointer2Код: Выделить всё
auto diff = llvmBuilder->CreatePtrDiff(llvmType, pointer1, pointer2);
if (llvm::dyn_cast(diff)) {
std::cerr
Источник: [url]https://stackoverflow.com/questions/78141502/how-to-compute-the-correct-pointer-difference-in-llvm-c-api-for-initializing-a[/url]
Мобильная версия