<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Модификатор const в API C++]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/263" />
	<updated>2013-02-18T06:34:29Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/263/</id>
		<entry>
			<title type="html"><![CDATA[Re: Модификатор const в API C++]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1295/#p1295" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ittakir]]></name>
				<uri>https://forum.guardant.ru/user/538/</uri>
			</author>
			<updated>2013-02-18T06:34:29Z</updated>
			<id>https://forum.guardant.ru/post/1295/#p1295</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Модификатор const в API C++]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1282/#p1282" />
			<content type="html"><![CDATA[<p>Не нужно двух версий, т. к. при добавлении модификатора &quot;const&quot; компиляция не нарушается. Поэтому в следующем SDK будет только &quot;const&quot;-вариант. Если хотите получить файлы сейчас напишите в hotline.</p>]]></content>
			<author>
				<name><![CDATA[Mikhail Bakalyarov]]></name>
				<uri>https://forum.guardant.ru/user/539/</uri>
			</author>
			<updated>2013-02-14T09:51:26Z</updated>
			<id>https://forum.guardant.ru/post/1282/#p1282</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Модификатор const в API C++]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1280/#p1280" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2013-02-14T07:46:40Z</updated>
			<id>https://forum.guardant.ru/post/1280/#p1280</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Модификатор const в API C++]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1269/#p1269" />
			<content type="html"><![CDATA[<p>Чтобы не ждать следующей версии SDK, напишите запрос на hotline@guardant.ru и вам отправят по почте заголовочные файлы с модификатором const (grdapi.h и grddongle.h). Так как эти файлы используются у многих клиентов, то изменить в них что-то серьёзно, увы, не получится. Но какую-то мелочь типа &quot;const&quot; исправить можем,&nbsp; пишите на форум. Спасибо за конструктивную критику.</p>]]></content>
			<author>
				<name><![CDATA[Mikhail Bakalyarov]]></name>
				<uri>https://forum.guardant.ru/user/539/</uri>
			</author>
			<updated>2013-02-13T16:02:44Z</updated>
			<id>https://forum.guardant.ru/post/1269/#p1269</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Модификатор const в API C++]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1263/#p1263" />
			<content type="html"><![CDATA[<p>Тогда вопрос, менять это планируется? Потому как аргумент &quot;для однообразия&quot; звучит какбы так... по-ламерски.</p>]]></content>
			<author>
				<name><![CDATA[ittakir]]></name>
				<uri>https://forum.guardant.ru/user/538/</uri>
			</author>
			<updated>2013-02-13T06:40:50Z</updated>
			<id>https://forum.guardant.ru/post/1263/#p1263</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Модификатор const в API C++]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1262/#p1262" />
			<content type="html"><![CDATA[<p><a href="https://forum.guardant.ru/post/492/#p492">Это сделано для единообразия.</a> :-)</p>]]></content>
			<author>
				<name><![CDATA[Luck]]></name>
				<uri>https://forum.guardant.ru/user/82/</uri>
			</author>
			<updated>2013-02-13T06:13:03Z</updated>
			<id>https://forum.guardant.ru/post/1262/#p1262</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Модификатор const в API C++]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/1261/#p1261" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ittakir]]></name>
				<uri>https://forum.guardant.ru/user/538/</uri>
			</author>
			<updated>2013-02-13T05:14:15Z</updated>
			<id>https://forum.guardant.ru/post/1261/#p1261</id>
		</entry>
</feed>
