{"id":296075,"date":"2019-12-19T15:00:23","date_gmt":"2019-12-19T15:00:23","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=296075"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=296075","title":{"rendered":"\u0422\u043e\u043f 10 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 C++ \u0437\u0430 2019 \u0433\u043e\u0434"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481190\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/7a8\/cc3\/539\/7a8cc3539721631b68ce36c56f5471bf.png\" alt=\"Picture 7\"><\/div>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0433\u043e\u0434 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0432\u0430\u0440\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043a\u043e\u0444\u0435 \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u0437\u043e\u0440\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0439 \u0433\u043e\u0434. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430 \u044d\u0442\u043e \u0443\u0439\u0434\u0451\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0438 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0442\u0435\u043c\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0438\u0441\u044c \u043d\u0430\u043c \u0432 2019 \u0433\u043e\u0434\u0443 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 C \u0438 C++.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h2>\u0414\u0435\u0441\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041a\u0430\u043a\u0430\u044f \u0443 \u043d\u0430\u0441 \u041e\u0421?\u00bb<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v1040\/\">V1040<\/a> Possible typo in the spelling of a pre-defined macro name. The &#8216;__MINGW32_&#8217; macro is similar to &#8216;__MINGW32__&#8217;. winapi.h 4112  <\/p>\n<pre><code class=\"cpp\">#if !defined(__UNICODE_STRING_DEFINED) &amp;&amp; defined(__MINGW32_) #define __UNICODE_STRING_DEFINED #endif<\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u0430 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 \u0438\u043c\u0435\u043d\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 <i>__MINGW32<\/i>_ (MINGW32 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442 __MINGW32__). \u0412 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ed5\/ad7\/425\/ed5ad7425145902765d728287ab5f2fa.png\" alt=\"Picture 3\"><\/div>\n<p>  \u042d\u0442\u043e, \u043a\u0441\u0442\u0430\u0442\u0438, \u0431\u044b\u043b\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0658\/\">CMake: \u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0435\u0433\u043e \u043a\u043e\u0434\u0430<\/a>&#171;, \u043d\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u0435\u0440\u0432\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u043e\u0439 V1040 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 (19 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2019).<\/p>\n<h2>\u0414\u0435\u0432\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041a\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439?\u00bb<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v502\/\">V502<\/a> Perhaps the &#8216;?:&#8217; operator works in a different way than it was expected. The &#8216;?:&#8217; operator has a lower priority than the &#8216;==&#8217; operator. mir_parser.cpp 884  <\/p>\n<pre><code class=\"cpp\">enum Opcode : uint8 {   kOpUndef,   ....   OP_intrinsiccall,   OP_intrinsiccallassigned,   ....   kOpLast, };  bool MIRParser::ParseStmtIntrinsiccall(StmtNodePtr &amp;stmt, bool isAssigned) {   Opcode o = !isAssigned ? (....)                          : (....);   auto *intrnCallNode = mod.CurFuncCodeMemPool()-&gt;New&lt;IntrinsiccallNode&gt;(....);   lexer.NextToken();   if (o == !isAssigned ? OP_intrinsiccall : OP_intrinsiccallassigned) {     intrnCallNode-&gt;SetIntrinsic(GetIntrinsicID(lexer.GetTokenKind()));   } else {     intrnCallNode-&gt;SetIntrinsic(static_cast&lt;MIRIntrinsicID&gt;(....));   }   .... }<\/code><\/pre>\n<p>  \u041d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">if (o == !isAssigned ? OP_intrinsiccall : OP_intrinsiccallassigned) {   .... }<\/code><\/pre>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;==&#8217; \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442, \u0447\u0435\u043c \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (?:). \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443:  <\/p>\n<pre><code class=\"cpp\">if ((o == !isAssigned) ? OP_intrinsiccall : OP_intrinsiccallassigned) {   .... }<\/code><\/pre>\n<p>  \u0410 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b <i>OP_intrinsiccall <\/i> \u0438 <i>OP_intrinsiccallassigned <\/i> \u0438\u043c\u0435\u044e\u0442 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0442\u043e \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0422\u0435\u043b\u043e \u0432\u0435\u0442\u043a\u0438 <i>else<\/i> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u043c \u043a\u043e\u0434\u043e\u043c.<\/p>\n<p>  \u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u043d\u0430\u0448 \u0442\u043e\u043f \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0690\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Ark Compiler, \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Huawei<\/a>&#171;.<\/p>\n<h2>\u0412\u043e\u0441\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439\u00bb<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v1046\/\">V1046<\/a> Unsafe usage of the bool&#8217; and &#8216;int&#8217; types together in the operation &#8216;&amp;=&#8217;. GSLMultiRootFinder.h 175  <\/p>\n<pre><code class=\"cpp\">int AddFunction(const ROOT::Math::IMultiGenFunction &amp; func) {   ROOT::Math::IMultiGenFunction * f = func.Clone();   if (!f) return 0;   fFunctions.push_back(f);   return fFunctions.size(); }  template&lt;class FuncIterator&gt; bool SetFunctionList( FuncIterator begin, FuncIterator end) {   bool ret = true;   for (FuncIterator itr = begin; itr != end; ++itr) {     const ROOT::Math::IMultiGenFunction * f = *itr;     ret &amp;= AddFunction(*f);   }   return ret; }<\/code><\/pre>\n<p>  \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043a\u043e\u0434\u0430 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>SetFunctionList <\/i>\u043e\u0431\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0418 \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 <i>false<\/i>, \u0438\u043d\u0430\u0447\u0435 <i>true<\/i>.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>SetFunctionList<\/i> \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>false<\/i> \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.\u0424\u0443\u043d\u043a\u0446\u0438\u044f <i>AddFunction<\/i> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 <i>fFunctions<\/i>. \u0422.\u0435. \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f: 1, 2, 3, 4 \u0438 \u0442.\u0434. \u0412\u043e\u0442 \u0442\u0443\u0442 \u0438 \u043d\u0430\u0447\u043d\u0451\u0442 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0431\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043a\u043e\u0434\u0435:  <\/p>\n<pre><code class=\"cpp\">ret &amp;= AddFunction(*f);<\/code><\/pre>\n<p>  \u0422.\u043a. \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0438\u043f\u0430 <i>int<\/i>, \u0430 \u043d\u0435 <i>bool<\/i>, \u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f &#8216;&amp;=&#8217; \u0441 \u0447\u0451\u0442\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>false<\/i>. \u0412\u0435\u0434\u044c \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0438\u0442 \u0447\u0451\u0442\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>SetFunctionsList<\/i> \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u043b\u0438 \u043a\u043e\u0434 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 (\u0430 \u0432\u044b \u0436\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0438\u0442\u0430\u043b\u0438, \u043f\u0440\u0430\u0432\u0434\u0430?), \u0442\u043e \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u043a\u043e\u0434 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 ROOT. \u041c\u044b \u0435\u0433\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438: &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0682\/\">\u0410\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430 ROOT \u2014 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0443\u0447\u043d\u044b\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439<\/a>&#171;.<\/p>\n<h2>\u0421\u0435\u0434\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445\u00bb<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v1001\/\">V1001<\/a> [CWE-563] The &#8216;Mode&#8217; variable is assigned but is not used by the end of the function. SIModeRegister.cpp 48  <\/p>\n<pre><code class=\"cpp\">struct Status {   unsigned Mask;   unsigned Mode;    Status() : Mask(0), Mode(0){};    Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {     Mode &amp;= Mask;   };   .... };<\/code><\/pre>\n<p>  \u041e\u0447\u0435\u043d\u044c \u043e\u043f\u0430\u0441\u043d\u043e \u0434\u0430\u0432\u0430\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0438\u043c\u0435\u043d\u0430, \u0447\u0442\u043e \u0438 \u0447\u043b\u0435\u043d\u0430\u043c \u043a\u043b\u0430\u0441\u0441\u0430. \u041e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f. \u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u043a\u0430\u043a \u0440\u0430\u0437 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439. \u042d\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430:  <\/p>\n<pre><code class=\"cpp\">Mode &amp;= Mask;<\/code><\/pre>\n<p>  \u041c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0418 \u0432\u0441\u0451. \u042d\u0442\u043e\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">Status(unsigned Mask, unsigned Mode) : Mask(Mask), Mode(Mode) {   this-&gt;Mode &amp;= Mask; };<\/code><\/pre>\n<p>  \u0410 \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437 <a href=\"http:\/\/llvm.org\/\">LLVM<\/a>. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044f \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442. \u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u0443 \u043d\u0430\u0441 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c <a href=\"https:\/\/www.viva64.com\/ru\/b\/0629\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435.<\/p>\n<h2>\u0428\u0435\u0441\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u0412 C++ \u0441\u0432\u043e\u0438 \u0437\u0430\u043a\u043e\u043d\u044b\u00bb<\/h2>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u0435 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0421++ \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u0441 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0438\u043b\u0438 \u00ab\u0437\u0434\u0440\u0430\u0432\u044b\u043c \u0441\u043c\u044b\u0441\u043b\u043e\u043c\u00bb. \u0417\u0430\u043c\u0435\u0442\u0438\u0442\u0435 \u0441\u0430\u043c\u0438, \u0433\u0434\u0435 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0442\u0440\u044b\u0432\u043a\u0435 \u043a\u043e\u0434\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430?<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v709\/\">V709<\/a> Suspicious comparison found: &#8216;f0 == f1 == m_fractureBodies.size()&#8217;. Remember that &#8216;a == b == c&#8217; is not equal to &#8216;a == b &amp;&amp; b == c&#8217;. btFractureDynamicsWorld.cpp 483  <\/p>\n<pre><code class=\"cpp\">btAlignedObjectArray&lt;btFractureBody*&gt; m_fractureBodies;  void btFractureDynamicsWorld::fractureCallback() {   for (int i = 0; i &lt; numManifolds; i++)   {     ....     int f0 = m_fractureBodies.findLinearSearch(....);     int f1 = m_fractureBodies.findLinearSearch(....);      if (f0 == f1 == m_fractureBodies.size())       continue;     ....   } .... }<\/code><\/pre>\n<p>  \u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e <i>f0<\/i> \u0440\u0430\u0432\u043d\u043e <i>f1<\/i> \u0438 \u0440\u0430\u0432\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 <i>m_fractureBodies<\/i>. \u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043b\u0438 <i>f0<\/i> \u0438 <i>f1<\/i> \u0432 \u043a\u043e\u043d\u0446\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <i>m_fractureBodies<\/i>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043c <i>findLinearSearch()<\/i> \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0440\u0430\u0432\u043d\u044b \u043b\u0438 <i>f0<\/i> \u0438 <i>f1<\/i>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0440\u0430\u0432\u043d\u043e \u043b\u0438 <i>m_fractureBodies.size()<\/i> \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 <i>f0 == f1<\/i>. \u0412 \u0438\u0442\u043e\u0433\u0435, \u0442\u0440\u0435\u0442\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u043d\u0434 \u0437\u0434\u0435\u0441\u044c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 0 \u0438\u043b\u0438 1.<\/p>\n<p>  \u041a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430! \u0418, \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0435\u0434\u043a\u0430\u044f. \u041f\u043e\u043a\u0430 \u043c\u044b <a href=\"https:\/\/www.viva64.com\/ru\/examples\/v709\/\">\u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438<\/a> \u0435\u0451 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0440\u0451\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0438, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0432\u0441\u0435 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u0433\u0440\u043e\u0432\u044b\u043c\u0438 \u0434\u0432\u0438\u0436\u043a\u0430\u043c\u0438. \u041a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0432 Bullet. \u0421\u0430\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u043d\u0430\u0448\u0443 \u0441\u0442\u0430\u0442\u044c\u044e &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0647\/\">PVS-Studio \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b \u0432 \u0434\u0432\u0438\u0436\u043e\u043a Red Dead Redemption \u2014 Bullet<\/a>&#171;.<\/p>\n<h2>\u041f\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u0427\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438?\u00bb<\/h2>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0442\u044c \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v739\/\">V739<\/a> EOF should not be compared with a value of the &#8216;char&#8217; type. The &#8216;ch&#8217; should be of the &#8216;int&#8217; type. json.cpp 762  <\/p>\n<pre><code class=\"cpp\">void JsonIn::skip_separator() {   signed char ch;   ....   if (ch == ',') {     if( ate_separator ) {       ....     }     ....   } else if (ch == EOF) {   .... }<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0435\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e <i>EOF<\/i> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043a\u0430\u043a -1. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0438\u043f\u0430 <i>signed char<\/i>, \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <i>false<\/i>. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u0434\u043e\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 0xFF (255). \u041f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 -1 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u043d\u044b\u043c.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0442\u043e\u043f\u0435 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0438\u0433\u0440\u0430\u043c\u0438: \u043e\u0442 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0434\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u0433\u0440. \u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043c\u043e\u0433\u043b\u0438 \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u043a \u043d\u0430\u043c \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b. \u0411\u043e\u043b\u044c\u0448\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0628\/\">Cataclysm Dark Days Ahead, \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0438 \u0440\u043e\u0433\u0430\u043b\u0438\u043a\u0438<\/a>&#171;.<\/p>\n<h2>\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041c\u0430\u0433\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u041f\u0438\u00bb<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v624\/\">V624<\/a> There is probably a misprint in &#8216;3.141592538&#8217; constant. Consider using the M_PI constant from &lt;math.h&gt;. PhysicsClientC_API.cpp 4109  <\/p>\n<pre><code class=\"cpp\">B3_SHARED_API void b3ComputeProjectionMatrixFOV(float fov, ....) {   float yScale = 1.0 \/ tan((3.141592538 \/ 180.0) * fov \/ 2);   .... }<\/code><\/pre>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 \u0447\u0438\u0441\u043b\u0435 \u041f\u0438 (3,141592653&#8230;), \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u00ab6\u00bb \u043d\u0430 7-\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/f83\/42b\/62f\/f8342b62f2250ce927675fbbc1f40af7.png\" alt=\"Picture 4\"><\/div>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043d\u043e\u0439 \u0434\u043e\u043b\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u0438 \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0449\u0443\u0442\u0438\u043c\u044b\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u043c, \u043d\u043e \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u0431\u0435\u0437 \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a. \u0414\u043b\u044f \u0447\u0438\u0441\u043b\u0430 \u041f\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 M_PI \u0438\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 math.h. <\/p>\n<p>  \u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0439 \u043d\u0430\u043c \u043f\u043e \u0448\u0435\u0441\u0442\u043e\u043c\u0443 \u043c\u0435\u0441\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0647\/\">PVS-Studio \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b \u0432 \u0434\u0432\u0438\u0436\u043e\u043a Red Dead Redemption \u2014 Bullet<\/a>&#171;. \u0415\u0441\u043b\u0438 \u0432\u044b \u0435\u0449\u0451 \u043d\u0435 \u043e\u0442\u043b\u043e\u0436\u0438\u043b\u0438 \u0435\u0451 \u043d\u0430 \u043f\u043e\u0442\u043e\u043c, \u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0430\u043d\u0441.<\/p>\n<h2>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0412\u043e\u0442 \u043c\u044b \u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u043b\u0438\u0441\u044c \u043a \u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. \u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043e\u043d\u0438 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0435 \u043f\u043e \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u044f, \u0430 \u043f\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0412\u0435\u0434\u044c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043d\u0430\u0434 code review \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u043d\u0435 \u0443\u0441\u0442\u0430\u0451\u0442 \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442. \ud83d\ude42<\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0442\u0440\u043e\u0439\u043a\u0443.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2ff\/519\/18d\/2ff51918d95a06eaf72aa7037aa66732.png\" alt=\"Picture 8\"><\/div>\n<h2>\u0422\u0440\u0435\u0442\u044c\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041d\u0435\u0443\u043b\u043e\u0432\u0438\u043c\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u00bb<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v702\/\">V702<\/a> Classes should always be derived from std::exception (and alike) as &#8216;public&#8217; (no keyword was specified, so compiler defaults it to &#8216;private&#8217;). CalcManager CalcException.h 4  <\/p>\n<pre><code class=\"cpp\">class CalcException : std::exception { public:   CalcException(HRESULT hr)   {     m_hr = hr;   }   HRESULT GetException()   {     return m_hr;   } private:   HRESULT m_hr; };<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043a\u043b\u0430\u0441\u0441, \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <i>std::exception<\/i> \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <i>private<\/i> (\u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043e). \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u0439\u043c\u0430\u0442\u044c \u043e\u0431\u0449\u0435\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <i>std::exception<\/i> \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 <i>CalcException<\/i> \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043e. \u0422\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432. <\/p>\n<p>  \u0414\u0430, \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0437-\u0437\u0430 \u0443\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 <i>public. <\/i>\u041a\u0441\u0442\u0430\u0442\u0438, \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0442\u044c \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438. \u042d\u0442\u043e \u0441\u0442\u0430\u0440\u044b\u0439 \u0434\u043e\u0431\u0440\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <a href=\"https:\/\/github.com\/Microsoft\/calculator\">\u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 Windows<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/www.viva64.com\/ru\/b\/0615\/\">\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438<\/a>.<\/p>\n<h2>\u0412\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041d\u0435\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 HTML-\u0442\u0435\u0433\u0438\u00bb<\/h2>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v735\/\">V735<\/a> Possibly an incorrect HTML. The &#171;&lt;\/body&gt;&#187; closing tag was encountered, while the &#171;&lt;\/div&gt;&#187; tag was expected. book.cpp 127  <\/p>\n<pre><code class=\"cpp\">static QString makeAlgebraLogBaseConversionPage() {   return     BEGIN     INDEX_LINK     TITLE(Book::tr(\"Logarithmic Base Conversion\"))     FORMULA(y = log(x) \/ log(a), log&lt;sub&gt;a&lt;\/sub&gt;x = log(x) \/ log(a))     END; }<\/code><\/pre>\n<p>  \u041a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0441 C\/C++ \u043a\u043e\u0434\u043e\u043c \u2014 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/19a\/7cf\/4d4\/19a7cf4d4da73085a677db2eceede962.png\" alt=\"Picture 6\"><\/div>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043d\u0435\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u0433 <i>&lt;div&gt;<\/i>. \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043c\u043d\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 html-\u043a\u043e\u0434\u0430 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c.<\/p>\n<p>  \u0423\u0434\u0438\u0432\u043b\u0435\u043d\u044b, \u0447\u0442\u043e \u043c\u044b \u0443\u043c\u0435\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438 \u0442\u0430\u043a\u043e\u0435? \u041a\u043e\u0433\u0434\u0430 \u044f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u044d\u0442\u043e \u0443\u0432\u0438\u0434\u0435\u043b, \u0442\u043e \u0431\u044b\u043b \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0451\u043d. \u0422\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0436\u0435\u0447\u043a\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c html-\u043a\u043e\u0434. \u041f\u0440\u0430\u0432\u0434\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u0434\u0435 C++. \ud83d\ude42<\/p>\n<p>  \u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043d\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0432 \u043d\u0430\u0448\u0435\u043c \u0442\u043e\u043f\u0435. \u0421\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0432\u0441\u0435\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044f \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0618\/\">\u041f\u043e \u0441\u043b\u0435\u0434\u0430\u043c \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432: SpeedCrunch<\/a>&#171;.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: \u00ab\u041d\u0435\u0443\u043b\u043e\u0432\u0438\u043c\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00bb<\/h2>\n<p>  \u0412\u043e\u0442 \u043c\u044b \u0438 \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430. \u0412\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0435-\u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0448\u043b\u0430 code review.<\/p>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0435\u0451 \u0441\u0430\u043c\u0438:  <\/p>\n<pre><code class=\"cpp\">static int EatWhitespace (FILE * InFile)   \/* ----------------------------------------------------------------------- **    * Scan past whitespace (see ctype(3C)) and return the first non-whitespace    * character, or newline, or EOF.    *    *  Input:  InFile  - Input source.    *    *  Output: The next non-whitespace character in the input stream.    *    *  Notes:  Because the config files use a line-oriented grammar, we    *          explicitly exclude the newline character from the list of    *          whitespace characters.    *        - Note that both EOF (-1) and the nul character ('\\0') are    *          considered end-of-file markers.    *    * ----------------------------------------------------------------------- **    *\/ {     int c;      for (c = getc (InFile); isspace (c) &amp;&amp; ('\\n' != c); c = getc (InFile))         ;     return (c); }                               \/* EatWhitespace *\/<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043d\u0430 \u0447\u0442\u043e \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440:<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v560\/\">V560<\/a> A part of conditional expression is always true: (&#8216;\\n&#8217; != c). params.c 136.<\/p>\n<p>  \u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0435-\u0447\u0442\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e\u0435 \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0444\u0430\u0439\u043b\u0435 (charset.h):  <\/p>\n<pre><code class=\"cpp\">#ifdef isspace #undef isspace #endif .... #define isspace(c) ((c)==' ' || (c) == '\\t')<\/code><\/pre>\n<p>  \u0422\u0430\u043a, \u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u2026 \u0412\u044b\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>c <\/i>\u0440\u0430\u0432\u043d\u044f\u0435\u0442\u0441\u044f <i>&#8216;\\n&#8217;, <\/i>\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u0430\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>isspace\u00a9 <\/i>\u0432\u0435\u0440\u043d\u0451\u0442 \u043b\u043e\u0436\u044c \u0438 \u0432\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0438\u0437-\u0437\u0430 short-circuit evaluation. \u0415\u0441\u043b\u0438 \u0436\u0435 <i>isspace\u00a9 <\/i>\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430, \u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>c <\/i>\u0440\u0430\u0432\u043d\u0430 \u0438\u043b\u0438 <i>&#8216; &#8216; <\/i>\u0438\u043b\u0438 <i>&#8216;\\t&#8217;, <\/i>\u0430 \u044d\u0442\u043e \u044f\u0432\u043d\u043e \u043d\u0435 \u0440\u0430\u0432\u043d\u043e <i>&#8216;\\n&#8217;<\/i>.<\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0430\u043a\u0440\u043e\u0441 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 <i>#define true false<\/i>,\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 code review. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043f\u0440\u043e\u0448\u0451\u043b \u0440\u0435\u0432\u044c\u044e \u0438 \u0431\u043b\u0430\u0433\u043e\u043f\u043e\u043b\u0443\u0447\u043d\u043e \u0436\u0434\u0430\u043b \u043d\u0430\u0441 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0448\u0438\u0431\u043a\u0438, \u0442\u043e \u043e\u043d \u0435\u0441\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0610\/\">\u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0432\u0430: \u043d\u0430\u0439\u0434\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 Midnight Commander<\/a>&#171;.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/a63\/2b1\/196\/a632b119620f61c1a553a02c998b1509.png\" alt=\"Picture 9\"><\/div>\n<p>  \u0417\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0439 \u0433\u043e\u0434 \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a. \u042d\u0442\u043e \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 copy-paste, \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u0445, \u043d\u0435\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0442\u0435\u0433\u0438 \u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041d\u043e \u043d\u0430\u0448 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f \u0438 <a href=\"https:\/\/www.viva64.com\/ru\/b\/0632\/\">\u0443\u0447\u0438\u0442\u0441\u044f<\/a> \u0438\u0441\u043a\u0430\u0442\u044c \u0432\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0430\u0433\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043a\u043e\u043d\u0435\u0446, \u0438 \u043d\u043e\u0432\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0430\u043a \u0436\u0435 \u0447\u0430\u0441\u0442\u043e, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442 \u043d\u0430\u0448\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u043f\u0435\u0440\u0432\u044b\u0435, \u0442\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0443\u0442\u043e\u0447\u043d\u044e, \u0447\u0442\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430 PVS-Studio, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c <a href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/\">\u0441\u043a\u0430\u0447\u0430\u0442\u044c<\/a> \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0443\u043c\u0435\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445: C, C++, C# \u0438 Java.<\/p>\n<p>  \u0412\u043e\u0442 \u043c\u044b \u0438 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430! \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043d\u0435 \u0443\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u043e\u0439\u0442\u0438 \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0430\u043c\u0438: <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481178\/\">C#<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481186\/\">Java<\/a>.<\/p>\n<p><a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/481188\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c78\/30f\/70c\/c7830f70c5577c3d6704f254d7cad6a3.png\" align=\"left\"><\/a><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Maxim Zvyagintsev. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/481188\/\">Top 10 Bugs Found in C++ Projects in 2019<\/a>.<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d() } } }t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>      <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481190\/\"> https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481190\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/481190\/\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/7a8\/cc3\/539\/7a8cc3539721631b68ce36c56f5471bf.png\" alt=\"Picture 7\"><\/div>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0433\u043e\u0434 \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0432\u0430\u0440\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u043a\u043e\u0444\u0435 \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u0437\u043e\u0440\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0439 \u0433\u043e\u0434. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430 \u044d\u0442\u043e \u0443\u0439\u0434\u0451\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0438 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0442\u0435\u043c\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0438\u0441\u044c \u043d\u0430\u043c \u0432 2019 \u0433\u043e\u0434\u0443 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 C \u0438 C++.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-296075","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/296075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=296075"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/296075\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=296075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=296075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=296075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}