<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Логика</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html</link>
    <description>Есть 16 -ти битное число типа, 0x0000 h, как его разбить на 0x00h H, 0x00h L.&lt;br&gt;</description>

<item>
    <title>Логика (pavlinux)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#33</link>
    <pubDate>Wed, 26 Nov 2014 22:58:32 GMT</pubDate>
    <description>&amp;gt; Почему не работает функция ceil, библиотека math.h подключена &lt;br&gt;&lt;br&gt;Зачем math.h?&lt;br&gt;&#091;code&#093;&lt;br&gt;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#define ceil(x) (long long)(x+1)&lt;br&gt;&lt;br&gt;int main(void)&lt;br&gt;&#123;&lt;br&gt;    double x = 987.654321;&lt;br&gt;    printf(&quot;&#037;lld&#092;n&quot;, ceil(x));&lt;br&gt;    return 0;&lt;br&gt;&#125;&lt;br&gt;&#091;/code&#093;&lt;br&gt;:)&lt;br&gt;</description>
</item>

<item>
    <title>Логика (skb7)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#31</link>
    <pubDate>Tue, 11 Nov 2014 11:50:35 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt; А вот так мне тож больше нравится, &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; H=data&amp;gt;&amp;gt;8; &lt;br&gt;&amp;gt;&amp;gt; unsigned char H = ((data &amp;gt;&amp;gt; 8)&amp;#124;( data &amp;lt;&amp;lt; 8)); &lt;br&gt;&amp;gt;&amp;gt; Это преобразование из Little Endian в Big Endian, &lt;br&gt;&amp;gt;&amp;gt; с последующих отрезанием старшей части компилятором.&lt;br&gt;&amp;gt; Почему не работает функция ceil, библиотека math.h подключена &lt;br&gt;&lt;br&gt;Ответ как всегда в начале мана:&lt;br&gt;&#091;code&#093;&lt;br&gt;$ man 3 ceil&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Видим следующее:&lt;br&gt;&#091;code&#093;&lt;br&gt;NAME&lt;br&gt;       ceil, ceilf, ceill - ceiling function: smallest integral value not less than argument&lt;br&gt;&lt;br&gt;SYNOPSIS&lt;br&gt;       #include &amp;lt;math.h&amp;gt;&lt;br&gt;&lt;br&gt;       double ceil(double x);&lt;br&gt;       float ceilf(float x);&lt;br&gt;       long double ceill(long double x);&lt;br&gt;&lt;br&gt;       Link with -lm.&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Т.е. одно из двух:&lt;br&gt;1. либо вы не линкуетесь с libm.so&lt;br&gt;2. либо вы используете неправильные типы данных:&lt;br&gt;&lt;br&gt;Вот пример работающего кода:&lt;br&gt;&#091;code&#093;&lt;br&gt;#include &amp;lt;math.h&amp;gt;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br&gt;&lt;br&gt;int main(void)&lt;br&gt;&#123;&lt;br&gt;double x = 15.365;&lt;br&gt;&lt;br&gt;printf(&quot;x       = &#037;f&#092;n&quot;, x);&lt;br&gt;printf(&quot;ceil(x) = &#037;f&#092;n&quot;, ceil(x));&lt;br&gt;&lt;br&gt;return EXIT_SUCCESS;&lt;br&gt;&#125;&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Соб</description>
</item>

<item>
    <title>Логика (RedD)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#30</link>
    <pubDate>Tue, 11 Nov 2014 09:09:08 GMT</pubDate>
    <description>&amp;gt;&amp;gt; А вот так мне тож больше нравится, &lt;br&gt;&amp;gt;&amp;gt; H=data&amp;gt;&amp;gt;8; &lt;br&gt;&amp;gt; unsigned char H = ((data &amp;gt;&amp;gt; 8)&amp;#124;( data &amp;lt;&amp;lt; 8)); &lt;br&gt;&amp;gt; Это преобразование из Little Endian в Big Endian, &lt;br&gt;&amp;gt; с последующих отрезанием старшей части компилятором.&lt;br&gt;&lt;br&gt;Почему не работает функция ceil, библиотека math.h подключена&lt;br&gt;</description>
</item>

<item>
    <title>Логика (pavlinux)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#29</link>
    <pubDate>Wed, 05 Nov 2014 15:58:28 GMT</pubDate>
    <description>&amp;gt; Да, пустой файл можно скомпилировать (правда особого смысла в этом нет).&lt;br&gt;&lt;br&gt;Процессор погреть, холода скоро. &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Логика (skb7)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#28</link>
    <pubDate>Tue, 04 Nov 2014 18:24:12 GMT</pubDate>
    <description>&amp;gt; Сам боклан :-P &lt;br&gt;&lt;br&gt;Як той казав: &quot;я мненью вашему вращенье придавал, и осью был мой детородный орган&quot; :)&lt;br&gt;&lt;br&gt;&amp;gt; Время дофига? Напиши молекулярный извлекатель&lt;br&gt;&lt;br&gt;Сударь, судя по вашем ухищрениям с компиляцией /dev/null, время дофига как раз-таки у вас. Just saying.&lt;br&gt;</description>
</item>

<item>
    <title>Логика (skb7)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#27</link>
    <pubDate>Tue, 04 Nov 2014 18:13:18 GMT</pubDate>
    <description>&amp;gt; Придумаешь тоже! Ни .с, ни .h не компилируются!!!&lt;br&gt;&lt;br&gt;С точностью до наоборот. Существующая возможность принудительно задавать тип файла через опцию &quot;-x&quot; не отменяет того факта, что и .c, и .h компилируются. По умолчанию компилятор определяет тип файла как раз таки по расширению). Из &quot;man gcc&quot;:&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;-x none&lt;br&gt;         Turn off any specification of a language, so that subsequent files are handled according to their file name suffixes (as they are if -x has not been used at all).&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Да, и раз уж на то пошло, то даже .h можно компилировать, см. Precompiled headers: https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html&lt;br&gt;&lt;br&gt;А .c можно не компилировать напрямую, а например инклудить в другие .c файлы; см. например вывод следующей команды в каталоге с сырцами кернела:&lt;br&gt;&#091;code&#093;&lt;br&gt;grep -r &apos;include &quot;.*&#092;.c&quot;&apos; drivers/usb/*&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Вот тут объяснено зачем это может понадобиться:&lt;br&gt;http://stackoverflow.com/questions/232693/including-one-c-source-file-in-another/1109255#1109255&lt;br&gt;&lt;br&gt;В конечном итоге всё св</description>
</item>

<item>
    <title>Логика (pavlinux)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#26</link>
    <pubDate>Tue, 04 Nov 2014 17:11:19 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Обьясни у каждого .h файла есть .c &lt;br&gt;&amp;gt;&amp;gt; Или бывает так что .h есть,  а .c нет?&lt;br&gt;&amp;gt;&amp;gt; то что .c может быть без .h понятно &lt;br&gt;&amp;gt; Компилируется именно .c файл (в объектный файл), .h файл не компилируется.&lt;br&gt;&lt;br&gt;Придумаешь тоже! Ни .с, ни .h не компилируются!!!&lt;br&gt;&lt;br&gt;$ echo &apos;int main()&#123; return 0;&#125;&apos; &amp;gt; system32.dll&lt;br&gt;$ gcc -xc system32.dll&lt;br&gt;$ ./a.out&lt;br&gt;&lt;br&gt;$ gcc -xc /dev/null -c &lt;br&gt;$ objdump -d null.o&lt;br&gt;&lt;br&gt;objdump -d null.o&lt;br&gt;&lt;br&gt;null.o:     формат файла elf64-x86-64&lt;br&gt;&lt;br&gt;Гы :)&lt;br&gt;</description>
</item>

<item>
    <title>Логика (skb7)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#25</link>
    <pubDate>Tue, 04 Nov 2014 16:58:03 GMT</pubDate>
    <description>&amp;gt; Обьясни у каждого .h файла есть .c&lt;br&gt;&amp;gt; Или бывает так что .h есть,  а .c нет?&lt;br&gt;&amp;gt; то что .c может быть без .h понятно &lt;br&gt;&lt;br&gt;Компилируется именно .c файл (в объектный файл), .h файл не компилируется. Перед этапом компиляции запускается препроцессор и просто заменяет все строки &quot;#include&quot; содержимым указанного .h файла.&lt;br&gt;&lt;br&gt;Так что да, может быть .h без соответствующего .c файла. Например, у тебя есть разные модули (.c файлы): модуль для датчика температуры, модуль для общения с дисплеем, модуль для общения с микросхемой RTC и т.д. Во всех модулях тебе нужно получать нижний и верхний байт от двухбайтной переменной. Можно сделать хедер, назвать его например &quot;common.h&quot;:&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;#ifndef COMMON_H&lt;br&gt;#define COMMON_H&lt;br&gt;&lt;br&gt;#include &amp;lt;stdint.h&amp;gt;&lt;br&gt;&lt;br&gt;/* Routines to get the high and low byte of 16-bit word */&lt;br&gt;#define HI(x) ((uint8_t)(x &amp;gt;&amp;gt; 8))&lt;br&gt;#define LO(x) ((uint8_t)(x))&lt;br&gt;&lt;br&gt;#endif /* COMMON_H */&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Дальше в каждом модуле подключить этот хедер и использовать макросы из него. При это не будет никакого &quot;common.c&quot; файла </description>
</item>

<item>
    <title>Логика (RedD)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/9928.html#24</link>
    <pubDate>Tue, 04 Nov 2014 16:00:28 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; L = data^0xff00; &lt;br&gt;&amp;gt;&amp;gt; Вот это кстати не работает ) Павлинус тя точно нельзя слушать, но &lt;br&gt;&amp;gt;&amp;gt; да лана умнее буду ) &lt;br&gt;&amp;gt;&amp;gt; Но у меня есть маленькое преимущество, я сразу в железе делаю, и &lt;br&gt;&amp;gt;&amp;gt; если код не работает это сразу видно )))) &lt;br&gt;&amp;gt; А оно и не может работать, маски накладываются операцией &quot;побитовое И&quot;, т.е. &lt;br&gt;&amp;gt; &quot;&amp;&quot;, а точно не операцией &quot;побитовое исключающее ИЛИ&quot;. Посмотрите в википедии &lt;br&gt;&amp;gt; таблицы истинности для этих операций и всё станет понятно. pavlinux либо &lt;br&gt;&amp;gt; опечатался, либо специально троллит (никогда не знаешь, он одинаково часто проделывает &lt;br&gt;&amp;gt; и то, и другое).&lt;br&gt;&lt;br&gt;Обьясни у каждого .h файла есть .c&lt;br&gt;Или бывает так что .h есть,  а .c нет?&lt;br&gt;то что .c может быть без .h понятно&lt;br&gt;</description>
</item>

</channel>
</rss>
