<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817256</guid>
        <pubDate>Sun, 22 Dec 2019 15:23:54 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817256</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817229'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2019-12-22T09:27:30+03:00">22.12.19, 06:27</time></span><div class='quote '>Выравнивание - &quot;головная&quot; боль машины/архитектуры. Считаю идеологически неправильным переносить её на компилятор с последующим неким переносом её на программиста.</div></div>Первая фраза абсолютно верна. Компилятор всегда обеспечивает правильное выравнивание для данных ему структур данных. Вторая прямо противоречит первой. Код явным образом насильно заставляет компилятор отойти от его правил. Посему сваливать на него ответственность за нарушение выравнивания... очень мягко говоря, некорректно. Если тебя вытолкнут на красный в спину, виноват будешь ты, да?]]></description>
        <author>Qraizer</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817254</guid>
        <pubDate>Sun, 22 Dec 2019 12:45:10 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817254</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817247'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dushevny &#064; <time class="tag-quote__quoted-time" datetime="2019-12-22T10:14:42+00:00">22.12.19, 10:14</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817204'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2019-12-21T18:04:58+00:00">21.12.19, 18:04</time></span><div class='quote '>А всего лишь хотелось изменить=подвинуть на 2 [байта] указатель...</div></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = (unsigned long *)(void *)((unsigned short *)a + 1);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>Приведение к (void *) - чтобы подавить жалобы компилятора на невыровненность получившегося указателя..</div></div><br>
Если речь идёт об этом, тогда лучше рассмотреть<br>
правильность программы вообще.<br>
Увеличить на 2 байта указатель unsigned long * - это<br>
значит выходить за границы переменной unsigned long.<br>
(Увеличить unsigned short * - это ещё объяснимо.)<br>
---<br>
Подозрительно выглядит сам алгоритм и ругательства<br>
компилятора выглядят совершенно к месту.<br>
Хотя он это делает по другому поводу.]]></description>
        <author>ЫукпШ</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817251</guid>
        <pubDate>Sun, 22 Dec 2019 11:31:50 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817251</link>
        <description><![CDATA[Славян: Да, можно и так. Но метод <strong class='tag-b'>Qraizer</strong>&#39;а всё же несколько краше. :blush:]]></description>
        <author>Славян</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817247</guid>
        <pubDate>Sun, 22 Dec 2019 10:14:42 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817247</link>
        <description><![CDATA[Dushevny: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817204'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2019-12-21T18:04:58+00:00">21.12.19, 18:04</time></span><div class='quote '>А всего лишь хотелось изменить=подвинуть на 2 [байта] указатель...</div></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = (unsigned long *)(void *)((unsigned short *)a + 1);</div></ol></div></div></div></div>Приведение к (void *) - чтобы подавить жалобы компилятора на невыровненность получившегося указателя..]]></description>
        <author>Dushevny</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817229</guid>
        <pubDate>Sun, 22 Dec 2019 06:27:30 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817229</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817215'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2019-12-21T19:49:38+00:00">21.12.19, 19:49</time></span><div class='quote '>Так подвинь:<br>
...</div></div>Тут заводится доп. переменная, а хочется компактно, изящно и лаконично, как было раньше... :&#39;( <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817219'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2019-12-21T21:55:16+00:00">21.12.19, 21:55</time></span><div class='quote '>В таком случае unsiged long* либо был невыровненным, либо стал таковым.</div></div>Выравнивание - &quot;головная&quot; боль машины/архитектуры. Считаю идеологически неправильным переносить её на компилятор с последующим неким переносом её на программиста. :oops:]]></description>
        <author>Славян</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817219</guid>
        <pubDate>Sat, 21 Dec 2019 21:55:16 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817219</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817204'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2019-12-21T18:04:58+00:00">21.12.19, 18:04</time></span><div class='quote '>А всего лишь хотелось изменить=подвинуть на 2 [байта] указатель...</div></div>В таком случае unsiged long* либо был невыровненным, либо стал таковым.]]></description>
        <author>Qraizer</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817215</guid>
        <pubDate>Sat, 21 Dec 2019 19:49:38 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817215</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416450&view=findpost&p=3817204'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2019-12-21T18:04:58+00:00">21.12.19, 18:04</time></span><div class='quote '>А всего лишь хотелось изменить=подвинуть на 2 [байта] указатель... :wall:</div></div><br>
Так подвинь:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void func(unsigned long *a)</div><div class="code_line">{</div><div class="code_line">// &nbsp; &nbsp; &nbsp; ...</div><div class="code_line">&nbsp;&nbsp; &nbsp; unsigned short aa = *((unsigned short*)a+1); </div><div class="code_line">//</div><div class="code_line">&nbsp;&nbsp; &nbsp; unsigned short* pa = ((unsigned short*)a+1); </div><div class="code_line">// &nbsp; &nbsp; &nbsp; ...</div><div class="code_line">&nbsp;&nbsp; &nbsp; unsigned short* pa = (unsigned short*)a; </div><div class="code_line">&nbsp;&nbsp; &nbsp; pa++;</div><div class="code_line">&nbsp;&nbsp; &nbsp; unsigned short aa = *pa; </div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>ЫукпШ</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817204</guid>
        <pubDate>Sat, 21 Dec 2019 18:04:58 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817204</link>
        <description><![CDATA[Славян: 1. Не знал, что (unsigned short*) - операция. Считал, что это лишь способ рассказать компилятору, что переменная=указатель указывает на нечто иное, и только то.<br>
2. Да, в принципе ваша строка делает то, что и требовалось, но читаемость, конечно, сильно пострадает от этого. :yes-sad:<br>
<br>
А всего лишь хотелось изменить=подвинуть на 2 [байта] указатель... :wall:]]></description>
        <author>Славян</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817199</guid>
        <pubDate>Sat, 21 Dec 2019 16:11:14 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817199</link>
        <description><![CDATA[Qraizer: Потому что операция преобразования unsigned long* в unsigned short* создаёт новый временный объект, не связанный с исходным a. Применение операции постинкремента к временному объекту бессмысленна, т.к. её результатом является новый временный объект с ещё не изменённым значением, а инкремент выполняется на предыдущем объекте, который невозможно никак использовать, на то он и временный.<br>
Если раньше компилировалось, значит компилятор нарушал Стандарт. Возможно, он не создавал временного объекта при касте типа указателя. Возможно, он плевать котел на бессмысленность постинкремента на rvalue вместо lvalue. В любом случае код и ранее был неправилен, а как правильно, надо спросить у его автора. Возможно он имел в виду<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">++*(unsigned short**)&a;</div></ol></div></div></div></div>что всё равно не сильно отличается от бреда.]]></description>
        <author>Qraizer</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817186</guid>
        <pubDate>Sat, 21 Dec 2019 13:39:42 +0000</pubDate>
        <title>Ошибка в изменении адреса</title>
        <link>https://forum.sources.ru/index.php?showtopic=416450&amp;view=findpost&amp;p=3817186</link>
        <description><![CDATA[Славян: Есть свой старый код:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void func( unsigned long *a)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;...</div><div class="code_line">&nbsp;&nbsp; &nbsp;((unsigned short*)a)++; // здесь выдаёт &quot;Lvalue required&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp;...</div><div class="code_line">}</div></ol></div></div></div></div>Раньше (в какой-то BCB2006 или около того) компилировалось, сейчас (RAD-XE8) выдаёт ошибку E2277. Почему? Как поправить?]]></description>
        <author>Славян</author>
        <category>Borland C++ Builder/Turbo C++ Explorer</category>
      </item>
	
      </channel>
      </rss>
	