<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Код корректно ли C: 32&amp;lt;-&amp;gt;64 ?</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9477.html</link>
    <description>Макрос разворачивает нек-рые ф-ции для типа arr, &lt;br&gt;предполагается хранить массив типа &quot;long&quot; (stl/boost/etc - не трогаем).&lt;br&gt;&lt;br&gt;Подскажите пожалуйста, есть ли недочеты/ошибки и т.д. ?&lt;br&gt;&lt;br&gt;Kод:&lt;br&gt;&lt;br&gt;#define SZ_CONST 16&lt;br&gt;&lt;br&gt;&lt;br&gt;typedef struct arr &lt;br&gt;&#123; &lt;br&gt;  size_t a;       /* allocated len */&lt;br&gt;  size_t len;     /* current len */&lt;br&gt;  ptrdiff_t *ptr; /* */&lt;br&gt;&#125; arr;&lt;br&gt;&lt;br&gt;&lt;br&gt;int realloc_redef(&lt;br&gt;char **d,&lt;br&gt;size_t c,&lt;br&gt;size_t n)&lt;br&gt;&#123;&lt;br&gt;  char *t;&lt;br&gt;&lt;br&gt;  if (!(t = (char *) malloc((size_t)(n)))) return 0;&lt;br&gt;  memcpy((void *)(t),(const void *)(*d),(size_t)(c));&lt;br&gt;  free((void *)(*d));&lt;br&gt;  *d = t;&lt;br&gt;&lt;br&gt;  return 1;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&lt;br&gt;int arr_ready(&lt;br&gt;arr *x, &lt;br&gt;size_t n) &lt;br&gt;&#123; &lt;br&gt;  size_t i; &lt;br&gt;&lt;br&gt;  if (x-&amp;gt;ptr) &#123; &lt;br&gt;&lt;br&gt;    i = x-&amp;gt;a; &lt;br&gt;    if (n &amp;gt; i) &#123; &lt;br&gt;&lt;br&gt;      x-&amp;gt;a = SZ_CONST + n + 2; &lt;br&gt;      if (realloc_redef((char **)&amp;x-&amp;gt;ptr,i * sizeof(long),x-&amp;gt;a * sizeof(long))) &lt;br&gt;        return 1; &lt;br&gt;&lt;br&gt;      x-&amp;gt;a = i; &lt;br&gt;      return 0; &lt;br&gt;      &#125;&lt;br&gt;    return 1; &lt;br&gt;    &#125; &lt;br&gt;  x-&amp;gt;a = n; &lt;br&gt;  x-&amp;gt;len = 0; &lt;br&gt;  return !!(x-&amp;gt;ptr = (ptrdiff_t *) malloc((size_t)((n * sizeof(long))))); &lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;i</description>

<item>
    <title>Код корректно ли C: 32&amp;lt;-&amp;gt;64 ? (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9477.html#5</link>
    <pubDate>Thu, 07 Jun 2012 11:30:20 GMT</pubDate>
    <description>&amp;gt;&amp;gt;2. Это уже из области былин, НОЛЬ он везде ноль.&lt;br&gt;&amp;gt; Ага, если бы по голове не зафигaчило - не поверил бы.&lt;br&gt;&lt;br&gt;  У конструкций типа (off_t)0, (char *)NULL, есть одни плюс - видно тип переменной.&lt;br&gt;Я вот хрен знает, остались ли ещё в природе компиляторы, для которых (char *) &lt;br&gt;и (void *) различны.&lt;br&gt;  Есть консольный торрент-клиент, его писал какой-то японец,&lt;br&gt;так там все переменные (char *) инициализируются как (char *)(&apos;&#092;0&apos;); :)&lt;br&gt;</description>
</item>

<item>
    <title>Код корректно ли C: 32&amp;lt;-&amp;gt;64 ? (nikto)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9477.html#4</link>
    <pubDate>Thu, 07 Jun 2012 06:10:31 GMT</pubDate>
    <description>&amp;gt;1. Ну для полного щастя я б ещё long в чё-нить типа s64/intmax_t превратил.&lt;br&gt;&lt;br&gt;Думается, после будущего разговора с рук-вом, &lt;br&gt;все-таки отказаться от использования long&#096;a - перехать на int,&lt;br&gt;тем более gui и локальные нсатройки.&lt;br&gt;&lt;br&gt;&amp;gt;2. Это уже из области былин, НОЛЬ он везде ноль.&lt;br&gt;&lt;br&gt;Ага, если бы по голове не зафигaчило - не поверил бы.&lt;br&gt;&lt;br&gt;&amp;gt;3. В Си, все твои потуги с явными типами в присваивании не считаются и выкидываются.&lt;br&gt;&lt;br&gt;Макросы разворачивают - работает, ну и ладно.&lt;br&gt;&lt;br&gt;&amp;gt;Для хорошей портабельности, используемые типы нужно подгонять &lt;br&gt;&amp;gt;под типы аргументов у библиотечных функций.&lt;br&gt;&lt;br&gt;Согласен, также см. п.2.&lt;br&gt;&lt;br&gt;Вообщем благодарствую, фронт работ прояснен.&lt;br&gt;</description>
</item>

<item>
    <title>Код корректно ли C: 32&amp;lt;-&amp;gt;64 ? (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9477.html#3</link>
    <pubDate>Wed, 06 Jun 2012 19:46:11 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Напурква столько скобок и преобразований типов?&lt;br&gt;&amp;gt; А по теме топика есть мнения - корректно ли  ?&lt;br&gt;&lt;br&gt;1. Ну для полного щастя я б ещё long в чё-нить типа s64/intmax_t превратил.&lt;br&gt; &lt;br&gt;&amp;gt; (off_t) 0&lt;br&gt;&lt;br&gt;2. Это уже из области былин, НОЛЬ он везде ноль. &lt;br&gt;&lt;br&gt;3. В Си, все твои потуги с явными типами в присваивании не считаются и выкидываются. &lt;br&gt;char *A  = (float *)malloc(n); всё равно будет (char *);&lt;br&gt;&lt;br&gt;Нафига преобразовывать тип указателя ваще не ясно. &lt;br&gt;На 32-битах они 4 байта, на 64-х - 8 байт. &lt;br&gt;&lt;br&gt;(ptrdiff_t **)(char *)(size_t **)(int ***)N, одно и тоже, что и (void *)N;&lt;br&gt;только код засрёшь, и потеряешь адрес или значение. Не, конечно бывают случаи &lt;br&gt;когда ну очень надо, но это такая редкость.&lt;br&gt;&lt;br&gt;Для хорошей портабельности, используемые типы нужно подгонять &lt;br&gt;под типы аргументов у библиотечных функций.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Код корректно ли C: 32&amp;lt;-&amp;gt;64 ? (nikto)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9477.html#2</link>
    <pubDate>Wed, 06 Jun 2012 16:30:46 GMT</pubDate>
    <description>&amp;gt; Напурква столько скобок и преобразований типов?&lt;br&gt;&lt;br&gt;1. Макросы раскрывают.&lt;br&gt;2. Был инцидент на одной платформе:&lt;br&gt;2.1. с (пере-) определением типов - замахался баг искать при передачу в функцию параметра: (off_t) 0&lt;br&gt;2.2. с тех пор при (пере-) определении и в макросах явное приведение типов,&lt;br&gt;2.3. а скобки ну есть не просят в макросах ну фиг с ними&lt;br&gt;2.4. если паямть не подводит темa в этом форуме(с/c++) назвыается: трабля&lt;br&gt;&lt;br&gt;А по теме топика есть мнения - корректно ли  ?&lt;br&gt;:)&lt;br&gt;</description>
</item>

<item>
    <title>Код корректно ли C: 32&amp;lt;-&amp;gt;64 ? (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9477.html#1</link>
    <pubDate>Wed, 06 Jun 2012 14:41:31 GMT</pubDate>
    <description>Напурква столько скобок и преобразований типов?&lt;br&gt;</description>
</item>

</channel>
</rss>
