<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: OpenNews: Основы написания переносимого кода</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html</link>
    <description>Сергей Каличев представил перевод (http://lex.iki.rssi.ru/~serj/docs/lemmings_ru/lemmings_ru.html) статьи с описанием типичных проблем, возникающих при написании переносимого кода, некоторые из проблемы очевидны, но ошибки, с ними связанные, продолжают регулярно появляться в реальном коде.&lt;br&gt;&lt;br&gt;URL: http://lex.iki.rssi.ru/~serj/docs/&lt;br&gt;Новость: http://www.opennet.ru/opennews/art.shtml?num=14963&lt;br&gt;</description>

<item>
    <title>Гм... (gena2x)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#16</link>
    <pubDate>Thu, 12 Feb 2009 11:34:57 GMT</pubDate>
    <description>&amp;gt;Как можно перепутать обращение к невыравненным данным (по их размеру) с проблеммой strict алиасинга в (я бы посоветовал gena2x попробовать свой тест на ветке 2.x.x - 3.x.x например )?&lt;br&gt;&lt;br&gt;Пример приводился для x86/linux/gcc. sizeof(int)==sizeof(long) - о каком выравнивании (по размеру) речь?&lt;br&gt;&lt;br&gt;Да, надо было дописать что -fstrict-aliasing только в четвертой ветке по умолчанию включается в -O2.&lt;br&gt;&lt;br&gt;&amp;gt;Wstrict-aliasing=2 тогда все проблемные места будет сразу видно:&lt;br&gt;&lt;br&gt;Не все, к сожалению, посему придётся разобраться в проблеме.&lt;br&gt;&lt;br&gt;&amp;gt; То дает инструкцию компилятору считать что все указатели разных типов указывают на непересекающиеся области памяти.&lt;br&gt;&lt;br&gt;Почти все, char* например - исключение.&lt;br&gt;</description>
</item>

<item>
    <title>Основы написания переносимого кода (Аноним)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#15</link>
    <pubDate>Fri, 28 Mar 2008 09:56:49 GMT</pubDate>
    <description>  Статья на слабую тройку. Перечислено только около 10&#037; типичных ошибок программистов. Автор похоже коммитит код в NetBSD и наивно считает ее самой портабельной, да и еще незаслуженно обижает разработчиков под Linux, которая BTW поддерживает в стабильной ветке на 6 CPU архитектур больше чем NETBSD и как минимум в два раза больше платформ и MMU BSP.&lt;br&gt;----------------------------------------------------&lt;br&gt;Недопонимание переводчика:&lt;br&gt;&lt;br&gt;О приведении типов указателей&lt;br&gt;В главе о приведении типов указателей попалась одна непонятная фраза: You are allowed to cast to the &#096;&#096;right&apos;&apos; type of an object when assigning via a pointer, so the compiler assumes all variables of the casted-to type might have changed. Вот комментарии автора по этому поводу:&lt;br&gt;&lt;br&gt;&amp;lt;&amp;lt;Скажем, у вас есть поток байтов, который включает в себя некоторый участок, и вы хотите обратиться к этому участку, как к структуре. Поток байтов не имеет выравнивания. Для указателя на байт используется char* или void*. Теперь, если привести тип указателя к типу struct* (</description>
</item>

<item>
    <title>Основы написания переносимого кода (vle)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#14</link>
    <pubDate>Thu, 27 Mar 2008 08:10:30 GMT</pubDate>
    <description>Мда, &quot;К сожалению, NetBSD заботится о двоичной совместимости&quot;.&lt;br&gt;Как раз к счастью NetBSD заботиться о бинарной совместимости, и очень жаль тех, кто о ней не заботится.&lt;br&gt;</description>
</item>

<item>
    <title>OpenNews: Основы написания переносимого кода (послушайте)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#13</link>
    <pubDate>Thu, 27 Mar 2008 07:34:52 GMT</pubDate>
    <description>&lt;br&gt;&amp;gt;ЧУВАААК, почитай доки к gcc, в частности non-bugs.txt или как там. ЗАПРЕЩЕНО &lt;br&gt;&amp;gt;такое делать. &lt;br&gt;&amp;gt;Чтобы это заработало у gcc есть ключик, но они говорят что в &lt;br&gt;&amp;gt;стандартах на C такое поведение не описано, поэтому сосямба. Ну и &lt;br&gt;&amp;gt;ничего что этот код совершенно непереносим из-за endianess? &lt;br&gt;&lt;br&gt;ЧУВАК это просто ПРИМЕР чтобы смысл в чем ОШИБКА показать..&lt;br&gt;</description>
</item>

<item>
    <title>OpenNews: Основы написания переносимого кода (очень жаль)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#12</link>
    <pubDate>Thu, 27 Mar 2008 07:31:36 GMT</pubDate>
    <description>для тех кто все еще ТРАМВАЕ - РЕСУРСЫ БИНАРНЫЕ&lt;br&gt;</description>
</item>

<item>
    <title>OpenNews: Основы написания переносимого кода (очень жаль)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#11</link>
    <pubDate>Thu, 27 Mar 2008 07:30:38 GMT</pubDate>
    <description>ну чи то разорались? умные все что ли?&lt;br&gt;пытаюсь перенести игрушку одну с DOS с РЕСУРСАМИ это вам вообще о чем нибудь говорит?&lt;br&gt;а&lt;br&gt;</description>
</item>

<item>
    <title>Основы написания переносимого кода (pavlinux)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#10</link>
    <pubDate>Wed, 26 Mar 2008 20:26:32 GMT</pubDate>
    <description>Сергей Каличев - статья полезная, перевод нужный... &lt;br&gt;&lt;br&gt;Давеча, пролетало, https://www.securecoding.cert.org/confluence/display/seccode/CERT+C+Secure+Coding+Standard&lt;br&gt;&lt;br&gt;Уже можете переводить :)&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>OpenNews: Основы написания переносимого кода (Аноним)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#9</link>
    <pubDate>Wed, 26 Mar 2008 17:02:27 GMT</pubDate>
    <description>&amp;gt; и вот такая конструкция:&lt;br&gt;&amp;gt; uint8_t a&#091;&#093; = &#123; 41, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 3 &#125;;&lt;br&gt;&amp;gt; uint32_t u32 = *((uint32_t *) &amp;a&#091;1&#093;);&lt;br&gt;&amp;gt; дает Bus error.&lt;br&gt;&lt;br&gt;И это ты типа удивлен? &#096;Вон из профессии!&apos; (C)&lt;br&gt;</description>
</item>

<item>
    <title>OpenNews: Основы написания переносимого кода (Аноним)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID3/40905.html#8</link>
    <pubDate>Wed, 26 Mar 2008 15:06:40 GMT</pubDate>
    <description>и вот такая конструкция:&lt;br&gt;uint8_t a&#091;&#093; = &#123; 41, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 3 &#125;;&lt;br&gt;&lt;br&gt;uint32_t u32 = *((uint32_t *) &amp;a&#091;1&#093;);&lt;br&gt;&lt;br&gt;дает Bus error.&lt;br&gt;&lt;br&gt;&lt;br&gt;ЧУВАААК, почитай доки к gcc, в частности non-bugs.txt или как там. ЗАПРЕЩЕНО такое делать.&lt;br&gt;Чтобы это заработало у gcc есть ключик, но они говорят что в стандартах на C такое поведение не описано, поэтому сосямба. Ну и ничего что этот код совершенно непереносим из-за endianess?&lt;br&gt;</description>
</item>

</channel>
</rss>
