ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
180877 Топик полностью
ReAl (10.02.2010 14:51, просмотров: 242) ответил koyodza на да оно и без разности указателей, просто на попытку применить к указателю любые действия (отсечь или обнулить старшие биты) тоже ругается что типа это уже не-константа
Так как раз разность - это единственное, что допустимо делать с двумя указателями, с одним - это добавить-вычесть целое. Просто стадарт допускает это (вычитание) делать только между указателями, показывающими на части одного объекта (массива, структуры). Макрос OFFSETOF-то работает, правда, он и константу сразу выдаёт по смыслу дйствия. Когда-то вроде что-то такое делал, но там оба указателя честно передавались линкеру как выражение, а уж он сам с перемещаэмыми значениями мог вытворять что угодно - хоть множить, ему уже всё равно было - указатель это или глобальная контанта из другого модуля. А тут - облом-с, похоже, что действительно просто линкеру такое выражение передать не может. Иначе копилятору логичнее было бы ругнуться "недопустимая операция для данных операндов".