|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Eugene Mironov 2:5020/175.2 19 Dec 2005 02:33:11 To : Artem Chuprina Subject : Re: Кросс-компиляция gcc -------------------------------------------------------------------------------- EM>> будет и в нативном компиляторе. Hапример, четверка не компилирует EM>> такое: EM>> void *p = ....; EM>> (int*)p += 2; AC> Это по логике странно, но есть уверенность, что стандарт это позволяет? AC> А какой стандарт имелся в виду? При ответе на последний вопрос стоит AC> предварительно убедиться, что режим его поддержки был включен. Если честно, за стандартом совсем не слежу. Видимо, компилятор стал строже. Hапример, есть пример такого кода в Мозилле, хотя там очень строго насчет поддержки стандартов и переносимости. EM>> Или: EM>> extern struct X x[]; EM>> если не было определения struct X. AC> Я очень извиняюсь, а бат хау? При использовании такого массива надо AC> уметь обращаться по индексу, сиречь считать смещение в байтах. А для AC> этого надо знать размер структуры. Массив - это не указатель... Дело в том, что если потом с такой переменной не производят обращение по индексу или к элементу структуры, а передают в качестве аргумента функции например, то более старшие компиляторы это хавали, а вот 4.x не хочет. Из-за подобной же конструкции четверка не компилировала i2c-core.c(в Linux kernel), хотя как я вижу в версии ядра 2.6.12 это поправили. Вообще-то можно просто взять четверку и скомпилировать Мозиллу - сразу все увидите. WBR, Eugene Mironov --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/3300e978e9e1.html, оценка из 5, голосов 10
|