<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Модификатор const в API C++]]></title>
		<link>https://forum.guardant.ru/topic/263/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/263" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Модификатор const в API C++».]]></description>
		<lastBuildDate>Mon, 18 Feb 2013 06:34:29 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Модификатор const в API C++]]></title>
			<link>https://forum.guardant.ru/post/1295/#p1295</link>
			<description><![CDATA[<div class="quotebox"><cite>Mikhail Bakalyarov пишет:</cite><blockquote><p>Не нужно двух версий, т. к. при добавлении модификатора &quot;const&quot; компиляция не нарушается. Поэтому в следующем SDK будет только &quot;const&quot;-вариант. Если хотите получить файлы сейчас напишите в hotline.</p></blockquote></div><p>Дождусь нового SDK, ибо негоже использовать часть файлов старых, часть подсовывать новых, накладывать патчи и т.п. Еще я на 100% не уверен, но возможно объектники тоже надо будет пересобирать.<br />Надеюсь, что в документации это также будет отражено (хотя с const и так будет понятно, что является входными параметрами, а что выходными).<br />Спасибо за оперативный ответ.</p>]]></description>
			<author><![CDATA[null@example.com (ittakir)]]></author>
			<pubDate>Mon, 18 Feb 2013 06:34:29 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1295/#p1295</guid>
		</item>
		<item>
			<title><![CDATA[Re: Модификатор const в API C++]]></title>
			<link>https://forum.guardant.ru/post/1282/#p1282</link>
			<description><![CDATA[<p>Не нужно двух версий, т. к. при добавлении модификатора &quot;const&quot; компиляция не нарушается. Поэтому в следующем SDK будет только &quot;const&quot;-вариант. Если хотите получить файлы сейчас напишите в hotline.</p>]]></description>
			<author><![CDATA[null@example.com (Mikhail Bakalyarov)]]></author>
			<pubDate>Thu, 14 Feb 2013 09:51:26 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1282/#p1282</guid>
		</item>
		<item>
			<title><![CDATA[Re: Модификатор const в API C++]]></title>
			<link>https://forum.guardant.ru/post/1280/#p1280</link>
			<description><![CDATA[<p>А после выхода следующей версии SDK, еще раз напишите запрос на hotline@guardant.ru и вам опять отправят по почте заголовочные файлы...</p><p>То есть, разработчикам Guardant&nbsp; придется поддерживать две ветки API: const и nonconst. Там может ст<strong>о</strong>ит включить const-версию очередной релиз, а nonconst-версию объявить устаревшей и, может, через пару лет забить на нее. </p><p>Как можно развести const и nonconst?</p><p>Можно в const-API использовать другой префикс, например Grd<strong>c</strong>XXXX.<br />Можно наоборот, в&nbsp; nonconst-API использовать другой префикс, например Grd<strong>Old</strong>XXXX. </p><p>А можно сделать как-то так:<br /></p><div class="codebox"><pre><code>#ifdef GRD_DONT_USE_CONST_API
#define GRD_CONST
#else
#define GRD_CONST const
#endif

int GRD_API  GrdSign(
                  HANDLE   hGrd,            
                  DWORD    dwAlgoNum,        
                  DWORD    dwDataLng,        
        GRD_CONST void    *pData,            
                  DWORD    dwSignResultLng,    
                  void    *pSignResult,    
                  void    *pReserved
   );</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Thu, 14 Feb 2013 07:46:40 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1280/#p1280</guid>
		</item>
		<item>
			<title><![CDATA[Re: Модификатор const в API C++]]></title>
			<link>https://forum.guardant.ru/post/1269/#p1269</link>
			<description><![CDATA[<p>Чтобы не ждать следующей версии SDK, напишите запрос на hotline@guardant.ru и вам отправят по почте заголовочные файлы с модификатором const (grdapi.h и grddongle.h). Так как эти файлы используются у многих клиентов, то изменить в них что-то серьёзно, увы, не получится. Но какую-то мелочь типа &quot;const&quot; исправить можем,&nbsp; пишите на форум. Спасибо за конструктивную критику.</p>]]></description>
			<author><![CDATA[null@example.com (Mikhail Bakalyarov)]]></author>
			<pubDate>Wed, 13 Feb 2013 16:02:44 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1269/#p1269</guid>
		</item>
		<item>
			<title><![CDATA[Re: Модификатор const в API C++]]></title>
			<link>https://forum.guardant.ru/post/1263/#p1263</link>
			<description><![CDATA[<p>Тогда вопрос, менять это планируется? Потому как аргумент &quot;для однообразия&quot; звучит какбы так... по-ламерски.</p>]]></description>
			<author><![CDATA[null@example.com (ittakir)]]></author>
			<pubDate>Wed, 13 Feb 2013 06:40:50 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1263/#p1263</guid>
		</item>
		<item>
			<title><![CDATA[Re: Модификатор const в API C++]]></title>
			<link>https://forum.guardant.ru/post/1262/#p1262</link>
			<description><![CDATA[<p><a href="https://forum.guardant.ru/post/492/#p492">Это сделано для единообразия.</a> :-)</p>]]></description>
			<author><![CDATA[null@example.com (Luck)]]></author>
			<pubDate>Wed, 13 Feb 2013 06:13:03 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1262/#p1262</guid>
		</item>
		<item>
			<title><![CDATA[Модификатор const в API C++]]></title>
			<link>https://forum.guardant.ru/post/1261/#p1261</link>
			<description><![CDATA[<p>При работе с API в С++ столкнулся с массой нелогичностей.<br />Например, абсолютное неиспользование модификатора доступа const.<br /></p><div class="codebox"><pre><code>int GRD_API  GrdSign(
        HANDLE hGrd,            
        DWORD    dwAlgoNum,        
        DWORD    dwDataLng,        
        void    *pData,            
        DWORD    dwSignResultLng,    
        void    *pSignResult,    
        void    *pReserved
   );</code></pre></div><p>Как определить, меняет ли функция исходные данные по указателю pData? В описании ничего про это не сказано.<br />Казалось бы, не должна. Зачем менять данные, которые мы хотим подписать?<br />Однозначно помог бы const, но его нет. Т.е. значит меняет?</p><p>Или допустим у класса CGrdDongle есть метод <br /></p><div class="codebox"><pre><code>HANDLE GetHandle()
{
    return m_hGrd;
}</code></pre></div><p>Экземпляр класса этот метод не меняет, почему он тогда не объявлен как константный?</p><p>Рекомендую тем, кто создает API прочитать книгу Джеффа Элджера &quot;C++ for real programmers&quot; <a href="http://www.rsdn.ru/res/book/cpp/cpp_real_programmers.xml">http://www.rsdn.ru/res/book/cpp/cpp_rea … ammers.xml</a><br />И это дело не эстетики (как форматирование кода), а нормального, правильного использования языка.</p>]]></description>
			<author><![CDATA[null@example.com (ittakir)]]></author>
			<pubDate>Wed, 13 Feb 2013 05:14:15 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/1261/#p1261</guid>
		</item>
	</channel>
</rss>
