Если это константное выражение для инициализатора, который должен
вычисляться на стадии компиляции, там есть нюансы реализации. Часть
вычислений собственно компилятор сделать не может, они передаются
линкеру. А формат объектного файла может иметь ограничения на
адресную арифметику, которая там содержится, причём более жёсткие
ограничения, чем правила константных выражений в стандарте языка
Си. В любом случае тулзы должны брать на себя обязательства по
поддержке стандарта, и если
не работает что-то из того, что обязано работать, значит, компиляторостроители накосячили.