|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 19 Dec 2005 15:54:47 To : Eugene Mironov Subject : Re: Кросс-компиляция gcc -------------------------------------------------------------------------------- Eugene Mironov -> Artem Chuprina @ Mon, 19 Dec 2005 01:33:11 +0300: EM>>> будет и в нативном компиляторе. Hапример, четверка не компилирует EM>>> такое: EM>>> void *p = ....; EM>>> (int*)p += 2; AC>> Это по логике странно, но есть уверенность, что стандарт это позволяет? AC>> А какой стандарт имелся в виду? При ответе на последний вопрос стоит AC>> предварительно убедиться, что режим его поддержки был включен. EM> Если честно, за стандартом совсем не слежу. Видимо, компилятор стал EM> строже. Hапример, есть пример такого кода в Мозилле, хотя там очень строго EM> насчет поддержки стандартов и переносимости. "Строго" и "получилось" - две большие разницы... EM>>> Или: EM>>> extern struct X x[]; EM>>> если не было определения struct X. AC>> Я очень извиняюсь, а бат хау? При использовании такого массива надо AC>> уметь обращаться по индексу, сиречь считать смещение в байтах. А для AC>> этого надо знать размер структуры. Массив - это не указатель... EM> Дело в том, что если потом с такой переменной не производят EM> обращение по индексу или к элементу структуры, а передают в EM> качестве аргумента функции например, то более старшие компиляторы EM> это хавали, а вот 4.x не хочет. Тогда надо и объявлять extern struct X *x; -- Artem Chuprina RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru Пришел в гости математик, почитать новую рукопись. Вычитал из нее трех героев напрочь, и ушел. Gimli on #arda --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/256066cb913f0.html, оценка из 5, голосов 10
|