{"id":299670,"date":"2020-03-04T15:00:44","date_gmt":"2020-03-04T15:00:44","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=299670"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=299670","title":{"rendered":"\u041f\u043e\u043c\u043e\u0433\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043f\u043e\u043c\u043e\u0447\u044c \u0442\u0435\u0431\u0435"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/490850\/\">\n<h2 id=\"predislovie\">\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a. \u0418 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0430\u044f \u0438\u0445 \u0447\u0430\u0441\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u041e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u044e\u0442 \u043a \u044f\u0437\u044b\u043a\u0443 C++ \u0432 \u044d\u0442\u0438\u0445 \u0432\u0430\u0448\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u0445, \u2014 \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c, \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0443 \u043f\u043e \u043d\u043e\u0433\u0430\u043c \u0438 \u0442.\u043f., \u2014 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u043a \u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u044f\u043c, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0434\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043b\u0451\u0433\u043a\u0438\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043b\u044c\u0446\u0435\u0432 \u043f\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u0443 \u0432\u043e\u043f\u0438\u044e\u0449\u0443\u044e \u043d\u0435\u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u044c, \u0438 \u043f\u0440\u043e\u043b\u044c\u0451\u043c \u0441\u0432\u0435\u0442 \u0438\u0441\u0442\u0438\u043d\u044b \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<p><a name=\"habracut\"><\/a><br \/>  <a name=\"contents\"><\/a>  <\/p>\n<h2 id=\"soderzhanie\">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<ol>\n<li><a href=\"#ode-to-the-compiler\">\u041e\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443<\/a><\/li>\n<li><a href=\"#ignore-or-not-to-ignore\">\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/a><\/li>\n<li><a href=\"#wall\">-Wall<\/a><\/li>\n<li><a href=\"#wextra\">-Wextra<\/a><\/li>\n<li><a href=\"#wpedantic\">-Wpedantic<\/a><\/li>\n<li><a href=\"#need-moar-warnings\">\u041d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439<\/a><\/li>\n<li><a href=\"#werror\">-Werror<\/a><\/li>\n<li><a href=\"#summary\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/li>\n<li><a href=\"#links\">\u0421\u0441\u044b\u043b\u043a\u0438<\/a><\/li>\n<\/ol>\n<p>  <a name=\"ode-to-the-compiler\"><\/a>  <\/p>\n<h2 id=\"oda-kompilyatorucontents\"><a href=\"#contents\">\u041e\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443<\/a><\/h2>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u2013 \u043b\u0443\u0447\u0448\u0438\u0439 \u0434\u0440\u0443\u0433 \u043f\u043b\u044e\u0441\u043e\u0432\u0438\u043a\u0430. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0435 \u043a\u043e\u0434\u044b. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u2014 \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<p>  <\/p>\n<p>\u0412\u0430\u0436\u043d\u0430\u044f (\u0438 \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f) \u043f\u043e\u043c\u043e\u0449\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u2014 \u043f\u043e\u0438\u0441\u043a \u043e\u0448\u0438\u0431\u043e\u043a. \u0418 \u044f \u0433\u043e\u0432\u043e\u0440\u044e \u043d\u0435 \u043e\u0431 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u0445, \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0442\u0438\u043f\u043e\u0432 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u042f \u0433\u043e\u0432\u043e\u0440\u044e \u043e\u0431 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043b\u043e\u0432\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<p>\u0427\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e \u043c\u043d\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e, \u043e\u043d\u0438 \u0434\u0430\u044e\u0442 \u043b\u043e\u0436\u043d\u043e\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043c\u0435\u0448\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0437\u0430\u043c\u044b\u043b\u0438\u0432\u0430\u044e\u0442 \u0433\u043b\u0430\u0437, \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u044e\u0442 \u043e\u0442 &quot;\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445&quot; \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0442.\u043f. \u0422\u0430\u043a\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043d\u043e \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0435\u0434\u043a\u043e\u0441\u0442\u044c.<\/p>\n<p>  <a name=\"ignore-or-not-to-ignore\"><\/a>  <\/p>\n<h2 id=\"ignorirovat-nelzya-ispravitcontents\"><a href=\"#contents\">\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/a><\/h2>\n<p>  <\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u2014 \u044d\u0442\u043e \u043d\u0435 &quot;\u0431\u0437\u0438\u043a&quot; \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043e\u0434\u043d\u043e, \u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e-\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0438\u043d\u043e\u0435.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043c\u043e\u0447\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u043e\u0440\u043d\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e. \u0422\u043e \u0435\u0441\u0442\u044c \u043b\u0438\u0431\u043e <em>\u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u043e\u0448\u0438\u0431\u043a\u0443<\/em>, \u043b\u0438\u0431\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u044f\u0432\u043d\u043e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u0438 <em>\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e<\/em>. \u041f\u0440\u0438\u0447\u0451\u043c \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u043d\u043e \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434. \u041b\u0438\u0448\u043d\u0438\u0439 <code>static_cast<\/code> \u0438\u043b\u0438 \u043f\u0430\u0440\u0430 \u0441\u043a\u043e\u0431\u043e\u043a \u0431\u0443\u0434\u0443\u0442 \u044f\u0432\u043d\u043e \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u043b\u043e\u0441\u044c \u0432 \u0432\u0438\u0434\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0445 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u0445 \u0438 \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043b\u043e\u0432\u0438\u0442\u044c \u0441 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u043e\u0435 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0442\u0438\u0432\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043b\u0435\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0451\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e \u044f\u0437\u044b\u043a\u0435 C++ \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0435 GCC (\u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Clang). \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u0438 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430\u0445.<\/p><\/blockquote>\n<p>  <a name=\"wall\"><\/a>  <\/p>\n<h2 id=\"-wallcontents\"><a href=\"#contents\">-Wall<\/a><\/h2>\n<p>  <\/p>\n<p><code>-Wall<\/code> \u2014 \u044d\u0442\u043e &quot;\u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440&quot; \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439. \u0412 \u044f\u0437\u044b\u043a\u0435 C++ \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0435 \u0432\u0441\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438).<\/p>\n<p>  <\/p>\n<blockquote><p><strong>\u0412\u0430\u0436\u043d\u043e:<\/strong><\/p>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043c\u0435\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/p><\/blockquote>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435:<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li><a href=\"#waddress\">-Waddress<\/a><\/li>\n<li><a href=\"#warray-bounds-1\">-Warray-bounds=1<\/a><\/li>\n<li><a href=\"#wbool-compare\">-Wbool-compare<\/a><\/li>\n<li><a href=\"#wbool-operation\">-Wbool-operation<\/a><\/li>\n<li><a href=\"#wcatch-value\">-Wcatch-value<\/a><\/li>\n<li><a href=\"#wchar-subscripts\">-Wchar-subscripts<\/a><\/li>\n<li><a href=\"#wcomment\">-Wcomment<\/a><\/li>\n<li><a href=\"#wint-in-bool-context\">-Wint-in-bool-context<\/a><\/li>\n<li><a href=\"#winit-self\">-Winit-self<\/a><\/li>\n<li><a href=\"#wlogical-not-parentheses\">-Wlogical-not-parentheses<\/a><\/li>\n<li><a href=\"#wmaybe-uninitialized\">-Wmaybe-uninitialized<\/a><\/li>\n<li><a href=\"#wmemset-elt-size\">-Wmemset-elt-size<\/a><\/li>\n<li><a href=\"#wmemset-transposed-args\">-Wmemset-transposed-args<\/a><\/li>\n<li><a href=\"#wmisleading-indentation\">-Wmisleading-indentation<\/a><\/li>\n<li><a href=\"#wmissing-attributes\">-Wmissing-attributes<\/a><\/li>\n<li><a href=\"#wmultistatement-macros\">-Wmultistatement-macros<\/a><\/li>\n<li><a href=\"#wnonnull\">-Wnonnull<\/a><\/li>\n<li><a href=\"#wnonnull-compare\">-Wnonnull-compare<\/a><\/li>\n<li><a href=\"#wparentheses\">-Wparentheses<\/a><\/li>\n<li><a href=\"#wpessimizing-move\">-Wpessimizing-move<\/a><\/li>\n<li><a href=\"#wreorder\">-Wreorder<\/a><\/li>\n<li><a href=\"#wreturn-type\">-Wreturn-type<\/a><\/li>\n<li><a href=\"#wsequence-point\">-Wsequence-point<\/a><\/li>\n<li><a href=\"#wsign-compare\">-Wsign-compare<\/a><\/li>\n<li><a href=\"#wsizeof-pointer-div\">-Wsizeof-pointer-div<\/a><\/li>\n<li><a href=\"#wsizeof-pointer-memaccess\">-Wsizeof-pointer-memaccess<\/a><\/li>\n<li><a href=\"#wstrict-aliasing\">-Wstrict-aliasing<\/a><\/li>\n<li><a href=\"#wswitch\">-Wswitch<\/a><\/li>\n<li><a href=\"#wtautological-compare\">-Wtautological-compare<\/a><\/li>\n<li><a href=\"#wtrigraphs\">-Wtrigraphs<\/a><\/li>\n<li><a href=\"#wuninitialized\">-Wuninitialized<\/a><\/li>\n<li><a href=\"#wunused-function\">-Wunused-function<\/a><\/li>\n<li><a href=\"#wunused-variable\">-Wunused-variable<\/a><\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <a name=\"waddress\"><\/a>  <\/p>\n<h3 id=\"-waddresswall\"><a href=\"#wall\">-Waddress<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438. \u0422\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u043e\u0431\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">bool func () {return false;}  int main () {     if (func)     {         return 1;     } }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:9: warning: the address of 'bool func()' will never be NULL [-Waddress]     5 |     if (func)       |         ^~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043c\u043e\u0436\u0435\u0442 \u0441\u043f\u0430\u0441\u0442\u0438 \u043e\u0442 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u043e\u0432\u0438\u0447\u043a\u0430 \u2014 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u0430 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0445\u043e\u0442\u0435\u043b \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u043b \u0434\u0432\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     const char * a = &quot;abc&quot;;     if (a == &quot;abc&quot;)     {         return 0;     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0431\u0434\u0438\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:11: warning: comparison with string literal results in unspecified behavior [-Waddress]     4 |     if (a == &quot;abc&quot;)       |         ~~^~~~~~~~<\/code><\/pre>\n<p>  <a name=\"warray-bounds-1\"><\/a>  <\/p>\n<h3 id=\"-warray-bounds1wall\"><a href=\"#wall\">-Warray-bounds=1<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0432\u044b\u0445\u043e\u0434\u0435 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <code>-O2<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main() {     int a[5] = {1, 2, 3, 4, 5};     return a[5]; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:15: warning: array subscript 5 is above array bounds of 'int [5]' [-Warray-bounds]     4 |     return a[5];       |            ~~~^ prog.cc:3:9: note: while referencing 'a'     3 |     int a[5] = {1, 2, 3, 4, 5};       |         ^<\/code><\/pre>\n<p>  <a name=\"wbool-compare\"><\/a>  <\/p>\n<h3 id=\"-wbool-comparewall\"><a href=\"#wall\">-Wbool-compare<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0431\u0443\u043b\u0435\u0432\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0440\u0430\u043a\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0431\u0443\u043b\u0435\u0432\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int n = 5;      if ((n &gt; 1) == 2)     {         return 0;     } }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:17: warning: comparison of constant '2' with boolean expression is always false [-Wbool-compare]     5 |     if ((n &gt; 1) == 2)       |         ~~~~~~~~^~~~<\/code><\/pre>\n<p>  <a name=\"wbool-operation\"><\/a>  <\/p>\n<h3 id=\"-wbool-operationwall\"><a href=\"#wall\">-Wbool-operation<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0441 \u0431\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u043c \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     bool b = true;     auto c = ~b; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:15: warning: '~' on an expression of type 'bool' [-Wbool-operation]     4 |     auto c = ~b;       |               ^ prog.cc:4:15: note: did you mean to use logical not ('!')?<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0434\u0435\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u043b\u0435\u0432\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0442\u043e \u0432 C++17 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438, \u0431\u0435\u0437\u043e \u0432\u0441\u044f\u043a\u0438\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439.<\/p>\n<p>  <a name=\"wcatch-value\"><\/a>  <\/p>\n<h3 id=\"-wcatch-valuewall\"><a href=\"#wall\">-Wcatch-value<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u043e\u043b\u0438\u043c\u043e\u0440\u0444\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct A {     virtual ~A () {}; };  struct B: A{};  int main () {     try {}     catch (A) {} }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:11:12: warning: catching polymorphic type 'struct A' by value [-Wcatch-value=]    11 |     catch (A) {}       |            ^<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f: <code>-Wcatch-value=n<\/code> (\u0441\u043c. \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443).<\/p>\n<p>  <a name=\"wchar-subscripts\"><\/a>  <\/p>\n<h3 id=\"-wchar-subscriptswall\"><a href=\"#wall\">-Wchar-subscripts<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443, \u0442\u0438\u043f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <code>char<\/code>. \u0410 \u0432\u0435\u0434\u044c <code>char<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int a[] = {1, 2, 3, 4};     char index = 'a' - 'b';     return a[index]; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:14: warning: array subscript has type 'char' [-Wchar-subscripts]     5 |     return a[index];       |              ^~~~~<\/code><\/pre>\n<p>  <a name=\"wcomment\"><\/a>  <\/p>\n<h3 id=\"-wcommentwall\"><a href=\"#wall\">-Wcomment<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u0439 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 (<code>\/*<\/code>), \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f, \u043b\u0438\u0431\u043e \u043e \u0440\u0430\u0437\u0440\u044b\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043b\u0435\u0448\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     \/* asd \/* fgh *\/     \/\/qwe\\     rty }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc:3:8: warning: &quot;\/*&quot; within comment [-Wcomment]     3 |     \/* \/* *\/       | prog.cc:4:5: warning: multi-line comment [-Wcomment]     4 |     \/\/ssd\\       |     ^<\/code><\/pre>\n<p>  <a name=\"wint-in-bool-context\"><\/a>  <\/p>\n<h3 id=\"-wint-in-bool-contextwall\"><a href=\"#wall\">-Wint-in-bool-context<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f \u0431\u0443\u043b\u0435\u0432\u044b \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int a = 5;     if (a &lt;= 4 ? 2 : 3)     {         return 0;     } }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:16: warning: ?: using integer constants in boolean context, the expression will always evaluate to 'true' [-Wint-in-bool-context]     4 |     if (a &lt;= 4 ? 2 : 3)       |         ~~~~~~~^~~~~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0434\u0432\u0438\u0433\u0430 \u0432 \u0431\u0443\u043b\u0435\u0432\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435. \u0412\u043f\u043e\u043b\u043d\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430, \u0438 \u0438\u043c\u0435\u043b\u0441\u044f \u0432 \u0432\u0438\u0434\u0443 \u043d\u0435 \u0441\u0434\u0432\u0438\u0433, \u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     for (auto a = 0; 1 &lt;&lt; a; a++); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:3:24: warning: '&lt;&lt;' in boolean context, did you mean '&lt;' ? [-Wint-in-bool-context]     3 |     for (auto a = 0; 1 &lt;&lt; a; a++);       |                      ~~^~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u043b\u044e\u0431\u044b\u0445 \u0432\u0438\u0434\u0430\u0445 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0431\u0443\u043b\u0435\u0432\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int a = 5;     if (a * 5); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:11: warning: '*' in boolean context, suggest '&amp;&amp;' instead [-Wint-in-bool-context]     4 |     if (a * 5);       |         ~~^~~<\/code><\/pre>\n<p>  <a name=\"winit-self\"><\/a>  <\/p>\n<h3 id=\"-winit-selfwall\"><a href=\"#wall\">-Winit-self<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <a href=\"https:\/\/www.youtube.com\/watch?v=x7PhvocOerw\" rel=\"nofollow\">\u0441\u0430\u043c\u0438\u043c\u0438 \u0441\u0430\u0431\u044f\u043c\u0438<\/a>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c <a href=\"#wuninitialized\"><code>-Wuninitialized<\/code><\/a>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int i = i;     return i; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:3:9: warning: 'i' is used uninitialized in this function [-Wuninitialized]     3 |     int i = i;       |         ^<\/code><\/pre>\n<p>  <a name=\"wlogical-not-parentheses\"><\/a>  <\/p>\n<h3 id=\"-wlogical-not-parentheseswall\"><a href=\"#wall\">-Wlogical-not-parentheses<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044f \u0432 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0441\u043b\u0438 \u043f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0431\u0443\u043b\u0435\u0432\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c, \u0442\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int a = 9;     if (!a &gt; 1); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:12: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]     5 |     if (!a &gt; 1);       |            ^ prog.cc:5:9: note: add parentheses around left hand side expression to silence this warning     5 |     if (!a &gt; 1);       |         ^~       |         ( )<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u0447\u0442\u043e \u0442\u0430\u043a \u0438 \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e \u2014 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u043e\u0431\u043a\u0438, \u043e \u0447\u0451\u043c \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/p>\n<p>  <a name=\"wmaybe-uninitialized\"><\/a>  <\/p>\n<h3 id=\"-wmaybe-uninitializedwall\"><a href=\"#wall\">-Wmaybe-uninitialized<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main (int argc, const char * argv[]) {     int x;     switch (argc)     {         case 1: x = 1;             break;         case 2: x = 4;             break;         case 3: x = 5;     }     return x; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main(int, const char**)': prog.cc:3:9: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]     3 |     int x;       |         ^<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>default<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main (int argc, const char * argv[]) {     int x;     switch (argc)     {         case 1: x = 1;             break;         case 2: x = 4;             break;         case 3: x = 5;             break;         default:             x = 17;     }     return x; }<\/code><\/pre>\n<p>  <a name=\"wmemset-elt-size\"><\/a>  <\/p>\n<h3 id=\"-wmemset-elt-sizewall\"><a href=\"#wall\">-Wmemset-elt-size<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>memset<\/code>, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432, \u0430 \u0442\u0440\u0435\u0442\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u2014 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435, \u043d\u043e \u043d\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u044d\u0442\u0438\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#include &lt;cstring&gt;  int main () {     constexpr auto size = 20ul;     int a[size];     std::memset(a, 0, size); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:7:27: warning: 'memset' used with length equal to number of elements without multiplication by element size [-Wmemset-elt-size]     7 |     std::memset(a, 0, size);       |                           ^<\/code><\/pre>\n<p>  <a name=\"wmemset-transposed-args\"><\/a>  <\/p>\n<h3 id=\"-wmemset-transposed-argswall\"><a href=\"#wall\">-Wmemset-transposed-args<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043b \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>memset<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#include &lt;cstring&gt;  int main () {     constexpr auto size = 20ul;     int a[size];     std::memset(a, size, 0); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:7:27: warning: 'memset' used with constant zero length parameter; this could be due to transposed parameters [-Wmemset-transposed-args]     7 |     std::memset(a, size, 0);       |                           ^<\/code><\/pre>\n<p>  <a name=\"wmisleading-indentation\"><\/a>  <\/p>\n<h3 id=\"-wmisleading-indentationwall\"><a href=\"#wall\">-Wmisleading-indentation<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u043a\u043e\u0434\u0435 \u043d\u0435 \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 <code>if<\/code>, <code>else<\/code>, <code>while<\/code> \u0438 <code>for<\/code>. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x;     if (true)         x = 3;         return x; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]     4 |     if (true)       |     ^~ prog.cc:6:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'     6 |         return x;       |         ^~~~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043c. \u0442\u0430\u043a\u0436\u0435 <a href=\"#wempty-body\"><code>-Wempty-body<\/code><\/a>.<\/p>\n<p>  <a name=\"wmissing-attributes\"><\/a>  <\/p>\n<h3 id=\"-wmissing-attributeswall\"><a href=\"#wall\">-Wmissing-attributes<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u043d\u0435 \u0441 \u0442\u0435\u043c \u0436\u0435 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u0447\u0442\u043e \u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">template &lt;class T&gt; T* __attribute__ ((malloc, alloc_size (1))) foo (long);  template &lt;&gt; void* __attribute__ ((malloc)) foo&lt;void&gt; (long);  int main () { }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc:7:1: warning: explicit specialization 'T* foo(long int) [with T = void]' may be missing attributes [-Wmissing-attributes]     7 | foo&lt;void&gt; (long);       | ^~~~~~~~~ prog.cc:3:1: note: missing primary template attribute 'alloc_size'     3 | foo (long);       | ^~~<\/code><\/pre>\n<p>  <a name=\"wmultistatement-macros\"><\/a>  <\/p>\n<h3 id=\"-wmultistatement-macroswall\"><a href=\"#wall\">-Wmultistatement-macros<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043c\u0430\u043a\u0440\u043e\u0441\u0430\u0445, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445 <code>if<\/code>, <code>else<\/code>, <code>while<\/code> \u0438 <code>for<\/code>. \u0412 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043c\u0430\u043a\u0440\u043e\u0441\u0430, \u0438 \u044d\u0442\u043e, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043e\u0448\u0438\u0431\u043a\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#define INCREMENT x++; y++  int main () {     int x = 0;     int y = 0;     if (true)         INCREMENT; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:1:19: warning: macro expands to multiple statements [-Wmultistatement-macros]     1 | #define INCREMENT x++; y++       |                   ^ prog.cc:8:9: note: in expansion of macro 'INCREMENT'     8 |         INCREMENT;       |         ^~~~~~~~~ prog.cc:7:5: note: some parts of macro expansion are not guarded by this 'if' clause     7 |     if (true)       |     ^~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043c. \u0442\u0430\u043a\u0436\u0435 <a href=\"#wmisleading-indentation\"><code>-Wmisleading-indentation<\/code><\/a>.<\/p>\n<p>  <a name=\"wnonnull\"><\/a>  <\/p>\n<h3 id=\"-wnonnullwall\"><a href=\"#wall\">-Wnonnull<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c <code>nunnull<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void f (int * ptr) __attribute__((nonnull));  int main () {     f(nullptr); }  void f (int *) {}<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:14: warning: null argument where non-null required (argument 1) [-Wnonnull]     5 |     f(nullptr);       |              ^<\/code><\/pre>\n<p>  <a name=\"wnonnull-compare\"><\/a>  <\/p>\n<h3 id=\"-wnonnull-comparewall\"><a href=\"#wall\">-Wnonnull-compare<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 \u043d\u0443\u043b\u0451\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c <code>nonnull<\/code>.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">bool f (int * ptr) __attribute__((nonnull));  int main () {     f(nullptr); }  bool f (int * p) {     return p == nullptr; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'bool f(int*)': prog.cc:10:17: warning: nonnull argument 'p' compared to NULL [-Wnonnull-compare]    10 |     return p == nullptr;       |                 ^~~~~~~<\/code><\/pre>\n<p>  <a name=\"wparentheses\"><\/a>  <\/p>\n<h3 id=\"-wparentheseswall\"><a href=\"#wall\">-Wparentheses<\/a><\/h3>\n<p>  <\/p>\n<p>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 \u043e\u043f\u0435\u0447\u0430\u0442\u0430\u043b\u0438\u0441\u044c, \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x = 5;     if (x = 4)     {         x = 3;     } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:11: warning: suggest parentheses around assignment used as truth value [-Wparentheses]     4 |     if (x = 4)       |         ~~^~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u041b\u0438\u0431\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u0434, \u043b\u0438\u0431\u043e \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x = 5;     if ((x = 4))     {         x = 3;     } }<\/code><\/pre>\n<p>  <a name=\"wpessimizing-move\"><\/a>  <\/p>\n<h3 id=\"-wpessimizing-movewall\"><a href=\"#wall\">-Wpessimizing-move<\/a><\/h3>\n<p>  <\/p>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u044f\u0432\u043d\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u043c\u043e\u0436\u0435\u0442 \u0443\u0445\u0443\u0434\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#include &lt;utility&gt;  struct A {};  A f () {     A a;     return std::move(a); }  int main () {     f(); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'A f()': prog.cc:8:21: warning: moving a local object in a return statement prevents copy elision [-Wpessimizing-move]     8 |     return std::move(a);       |            ~~~~~~~~~^~~ prog.cc:8:21: note: remove 'std::move' call<\/code><\/pre>\n<p>  <a name=\"wreorder\"><\/a>  <\/p>\n<h3 id=\"-wreorderwall\"><a href=\"#wall\">-Wreorder<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0438\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u044d\u0442\u0438\u0445 \u0447\u043b\u0435\u043d\u043e\u0432, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct A {     int i;     int j;      A(): j(0), i(1)     {     } };  int main () {}<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In constructor 'A::A()': prog.cc:4:9: warning: 'A::j' will be initialized after [-Wreorder]     4 |     int j;       |         ^ prog.cc:3:9: warning:   'int A::i' [-Wreorder]     3 |     int i;       |         ^ prog.cc:6:5: warning:   when initialized here [-Wreorder]     6 |     A(): j(0), i(1)       |     ^<\/code><\/pre>\n<p>  <a name=\"wreturn-type\"><\/a>  <\/p>\n<h3 id=\"-wreturn-typewall\"><a href=\"#wall\">-Wreturn-type<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int f () { }  int main () {}<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int f()': prog.cc:3:1: warning: no return statement in function returning non-void [-Wreturn-type]     3 | }       | ^<\/code><\/pre>\n<p>  <a name=\"wsequence-point\"><\/a>  <\/p>\n<h3 id=\"-wsequence-pointwall\"><a href=\"#wall\">-Wsequence-point<\/a><\/h3>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u0435\u043a \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u041b\u044e\u0431\u0438\u043c\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 (\u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u043b\u0430\u0439\u0442\u0435):<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int a = 6;     ++a = a++; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:12: warning: operation on 'a' may be undefined [-Wsequence-point]     4 |     ++a = a++;       |           ~^~<\/code><\/pre>\n<p>  <a name=\"wsign-compare\"><\/a>  <\/p>\n<h3 id=\"-wsign-comparewall\"><a href=\"#wall\">-Wsign-compare<\/a><\/h3>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0438\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439. \u0421\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0438 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u044f\u0432\u043d\u044b\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043d\u0435\u044f\u0432\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u043c\u0443 \u0438 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     short a = -5;     unsigned b = 4;     if (a &lt; b)     {         return 0;     }      return 1; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:11: warning: comparison of integer expressions of different signedness: 'short int' and 'unsigned int' [-Wsign-compare]     5 |     if (a &lt; b)       |         ~~^~~<\/code><\/pre>\n<p>  <a name=\"wsizeof-pointer-div\"><\/a>  <\/p>\n<h3 id=\"-wsizeof-pointer-divwall\"><a href=\"#wall\">-Wsizeof-pointer-div<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u0434\u0432\u0443\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <code>sizeof<\/code>, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435 \u0431\u0435\u0440\u0443\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     const char * a = &quot;12345&quot;;     auto size = sizeof (a) \/ sizeof (a[0]); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:28: warning: division 'sizeof (const char*) \/ sizeof (const char)' does not compute the number of array elements [-Wsizeof-pointer-div]     4 |     auto size = sizeof (a) \/ sizeof (a[0]);       |                 ~~~~~~~~~~~^~~~~~~~~~~~~~~ prog.cc:3:18: note: first 'sizeof' operand was declared here     3 |     const char * a = &quot;12345&quot;;       |                  ^<\/code><\/pre>\n<p>  <a name=\"wsizeof-pointer-memaccess\"><\/a>  <\/p>\n<h3 id=\"-wsizeof-pointer-memaccesswall\"><a href=\"#wall\">-Wsizeof-pointer-memaccess<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0430\u043c\u044f\u0442\u044c\u044e (<code>str...<\/code>, <code>mem...<\/code> \u0438 \u0442.\u043f.), \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>sizeof<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#include &lt;cstring&gt;  int main () {     char a[10];     const char * s = &quot;qwerty&quot;;     std::memcpy (a, s, sizeof(s)); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:7:24: warning: argument to 'sizeof' in 'void* memcpy(void*, const void*, size_t)' call is the same expression as the source; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]     7 |     std::memcpy (a, s, sizeof(s));       |                        ^~~~~~~~~<\/code><\/pre>\n<p>  <a name=\"wstrict-aliasing\"><\/a>  <\/p>\n<h3 id=\"-wstrict-aliasingwall\"><a href=\"#wall\">-Wstrict-aliasing<\/a><\/h3>\n<p>  <\/p>\n<p>\u041a\u0430\u043b\u0430\u043c\u0431\u0443\u0440 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 (strict aliasing) \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u043d\u0430\u0439\u0442\u0438 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>  <a name=\"wswitch\"><\/a>  <\/p>\n<h3 id=\"-wswitchwall\"><a href=\"#wall\">-Wswitch<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u044b \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <code>switch<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">enum struct enum_t {     a, b, c };  int main () {     enum_t e = enum_t::a;     switch (e)     {         case enum_t::a:         case enum_t::b:             return 0;     } }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:9:12: warning: enumeration value 'c' not handled in switch [-Wswitch]     9 |     switch (e)       |            ^<\/code><\/pre>\n<p>  <a name=\"wtautological-compare\"><\/a>  <\/p>\n<h3 id=\"-wtautological-comparewall\"><a href=\"#wall\">-Wtautological-compare<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0441 \u0441\u0430\u043c\u043e\u0439 \u0441\u043e\u0431\u043e\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int i = 1;     if (i &gt; i); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:11: warning: self-comparison always evaluates to false [-Wtautological-compare]     4 |     if (i &gt; i);       |         ~ ^ ~<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u0445 \u043f\u0440\u0438 \u0443\u0447\u0430\u0441\u0442\u0438\u0438 \u0431\u0438\u0442\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e \u0438\u043b\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u043e):<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int i = 1;     if ((i &amp; 16) == 10); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:18: warning: bitwise comparison always evaluates to false [-Wtautological-compare]     4 |     if ((i &amp; 16) == 10);       |         ~~~~~~~~ ^~ ~~<\/code><\/pre>\n<p>  <a name=\"wtrigraphs\"><\/a>  <\/p>\n<h3 id=\"-wtrigraphswall\"><a href=\"#wall\">-Wtrigraphs<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D1%80%D0%B8%D0%B3%D1%80%D0%B0%D1%84_(%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8_%D0%A1%D0%B8)\" rel=\"nofollow\">\u0442\u0440\u0438\u0433\u0440\u0430\u0444\u043e\u0432<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u041d\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u0440\u0438\u0433\u0440\u0430\u0444\u0430\u0445 \u0432 \u0442\u0435\u043b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0438\u0433\u0440\u0430\u0444 \u0442\u0440\u0430\u043a\u0442\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0421\u043c. \u0442\u0430\u043a\u0436\u0435 <a href=\"#wcomment\"><code>-Wcomment<\/code><\/a>.<\/p>\n<p>  <a name=\"wuninitialized\"><\/a>  <\/p>\n<h3 id=\"-wuninitializedwall\"><a href=\"#wall\">-Wuninitialized<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x;     return x; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:12: warning: 'x' is used uninitialized in this function [-Wuninitialized]     4 |     return x;       |            ^<\/code><\/pre>\n<p>  <a name=\"wunused-function\"><\/a>  <\/p>\n<h3 id=\"-wunused-functionwall\"><a href=\"#wall\">-Wunused-function<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430, \u043d\u043e \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430, \u043b\u0438\u0431\u043e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043d\u0435 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u043a <code>inline<\/code>, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <a name=\"wunused-variable\"><\/a>  <\/p>\n<h3 id=\"-wunused-variablewall\"><a href=\"#wall\">-Wunused-variable<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x = 0; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:3:9: warning: unused variable 'x' [-Wunused-variable]     3 |     int x = 0;       |         ^<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a \u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u043e\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <code>static_cast&lt;void&gt;(...)<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x = 0;     static_cast&lt;void&gt;(x); }<\/code><\/pre>\n<p>  <a name=\"wextra\"><\/a>  <\/p>\n<h2 id=\"-wextracontents\"><a href=\"#contents\">-Wextra<\/a><\/h2>\n<p>  <\/p>\n<p>&quot;\u0410\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440&quot; \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e, \u0447\u0435\u0433\u043e \u043d\u0435\u0442 \u0432 <a href=\"#wall\"><code>-Wall<\/code><\/a> (\u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 <code>-Wall<\/code>, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0435 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438).<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435:<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li><a href=\"#wempty-body\">-Wempty-body<\/a><\/li>\n<li><a href=\"#wimplicit-fallthrough\">-Wimplicit-fallthrough<\/a><\/li>\n<li><a href=\"#wmissing-field-initializers\">-Wmissing-field-initializers<\/a><\/li>\n<li><a href=\"#wredundant-move\">-Wredundant-move<\/a><\/li>\n<li><a href=\"#wtype-limits\">-Wtype-limits<\/a><\/li>\n<li><a href=\"#wshift-negative-value\">-Wshift-negative-value<\/a><\/li>\n<li><a href=\"#wunused-parameter\">-Wunused-parameter<\/a><\/li>\n<li><a href=\"#wunused-but-set-parameter\">-Wunused-but-set-parameter<\/a><\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <a name=\"wempty-body\"><\/a>  <\/p>\n<h3 id=\"-wempty-bodywextra\"><a href=\"#wextra\">-Wempty-body<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u0443\u0441\u0442\u043e\u043c \u0442\u0435\u043b\u0435 \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u0446\u0438\u043a\u043b\u0430 <code>do-while<\/code>. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0435, \u043c\u0435\u043d\u044f\u044e\u0449\u0435\u0439 \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     if (true);     {         return 1;     } }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:3:14: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]     3 |     if (true);       |              ^<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043c. \u0442\u0430\u043a\u0436\u0435 <a href=\"#wmisleading-indentation\"><code>-Wmisleading-indentation<\/code><\/a>.<\/p>\n<p>  <a name=\"wimplicit-fallthrough\"><\/a>  <\/p>\n<h3 id=\"-wimplicit-fallthroughwextra\"><a href=\"#wextra\">-Wimplicit-fallthrough<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e &quot;\u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u043d\u0438\u0438&quot; \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 <code>switch<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x = 7;     int a;     switch (x)     {         case 1:             a = 1;             break;         case 2:             a = 2;         case 3:             a = 3;             break;         default:             a = 0;     }     return a; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0437\u0430\u0431\u044b\u043b <code>break<\/code>, \u0438 <code>case 2<\/code> \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:11:15: warning: this statement may fall through [-Wimplicit-fallthrough=]    11 |             a = 2;       |             ~~^~~ prog.cc:13:9: note: here    13 |         case 3:       |         ^~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 C++17 \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044f\u0432\u043d\u043e\u0433\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u2014 <code>fallthrough<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int x = 7;     int a;     switch (x)     {         case 1:             a = 1;             break;         case 2:             a = 2;             [[fallthrough]];         case 3:             a = 3;             break;         default:             a = 0;     }     return a; }<\/code><\/pre>\n<p>  <a name=\"wmissing-field-initializers\"><\/a>  <\/p>\n<h3 id=\"-wmissing-field-initializerswextra\"><a href=\"#wextra\">-Wmissing-field-initializers<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u043b\u0435\u043d\u044b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct S {     int f;     int g;     int h; };  int main () {     S s{3, 4}; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:10:13: warning: missing initializer for member 'S::h' [-Wmissing-field-initializers]    10 |     S s{3, 4};       |             ^<\/code><\/pre>\n<p>  <a name=\"wredundant-move\"><\/a>  <\/p>\n<h3 id=\"-wredundant-movewextra\"><a href=\"#wextra\">-Wredundant-move<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 <code>std::move<\/code> \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#include &lt;utility&gt;  struct S {};  S f (S s) {     return std::move(s); }  int main () {     auto s = f(S{}); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'S f(S)': prog.cc:7:21: warning: redundant move in return statement [-Wredundant-move]     7 |     return std::move(s);       |            ~~~~~~~~~^~~ prog.cc:7:21: note: remove 'std::move' call<\/code><\/pre>\n<p>  <a name=\"wtype-limits\"><\/a>  <\/p>\n<h3 id=\"-wtype-limitswextra\"><a href=\"#wextra\">-Wtype-limits<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u044e\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0431\u0435\u0437\u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0442\u043e, \u0432\u0438\u0434\u0438\u043c\u043e, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u043e\u0434\u043d\u0430\u043a\u043e, \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u0412\u0438\u0434\u0438\u043c\u043e, \u043e\u043d \u0433\u0434\u0435-\u0442\u043e \u043e\u0448\u0438\u0431\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     unsigned x = 17;     if (x &gt;= 0)     {         return 1;     } }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:11: warning: comparison of unsigned expression &gt;= 0 is always true [-Wtype-limits]     4 |     if (x &gt;= 0)       |         ~~^~~~<\/code><\/pre>\n<p>  <a name=\"wshift-negative-value\"><\/a>  <\/p>\n<h3 id=\"-wshift-negative-valuewextra\"><a href=\"#wextra\">-Wshift-negative-value<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0441\u0434\u0432\u0438\u0433\u0430 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u041e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0430 \u0434\u043b\u044f \u043d\u0438\u0445 \u044d\u0442\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     const int x = -7;     return x &lt;&lt; 4; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:17: warning: left shift of negative value [-Wshift-negative-value]     4 |     return x &lt;&lt; 4;       |                 ^<\/code><\/pre>\n<p>  <a name=\"wunused-parameter\"><\/a>  <\/p>\n<h3 id=\"-wunused-parameterwextra\"><a href=\"#wextra\">-Wunused-parameter<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u044b\u043b\u0438, \u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void f (int x) {}  int main () { }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'void f(int)': prog.cc:1:13: warning: unused parameter 'x' [-Wunused-parameter]     1 | void f (int x) {}       |         ~~~~^<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 C++17 \u0434\u043b\u044f \u044f\u0432\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>maybe_unused<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void f ([[maybe_unused]] int x) {}  int main () { }<\/code><\/pre>\n<p>  <a name=\"wunused-but-set-parameter\"><\/a>  <\/p>\n<h3 id=\"-wunused-but-set-parameterwextra\"><a href=\"#wextra\">-Wunused-but-set-parameter<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0431\u044b\u043b\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void f (int x) {     x = 7; }  int main () { }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'void f(int)': prog.cc:1:13: warning: parameter 'x' set but not used [-Wunused-but-set-parameter]     1 | void f (int x)       |         ~~~~^<\/code><\/pre>\n<p>  <a name=\"wpedantic\"><\/a>  <\/p>\n<h2 id=\"-wpedanticcontents\"><a href=\"#contents\">-Wpedantic<\/a><\/h2>\n<p>  <\/p>\n<p><a href=\"#wall\"><code>-Wall<\/code><\/a> \u0438 <a href=\"#wextra\"><code>-Wextra<\/code><\/a> \u2014 \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0451, \u043d\u0430 \u0447\u0442\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u043d\u0438\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043b\u0430\u0433 <code>-Wpedantic<\/code> (\u043e\u043d \u0436\u0435 <code>-pedantic<\/code>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u043e\u0434\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 ISO C++, \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043b\u0438\u0448\u043d\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439, \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0448\u0442\u0443\u043a\u0430\u0445.<\/p>\n<p>  <a name=\"need-moar-warnings\"><\/a>  <\/p>\n<h2 id=\"nuzhno-bolshe-preduprezhdeniycontents\"><a href=\"#contents\">\u041d\u0443\u0436\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439<\/a><\/h2>\n<p>  <\/p>\n<p>\u041d\u043e \u0438 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u043b\u0430\u0433\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u043d\u0438 \u0432 \u043e\u0434\u0438\u043d \u0438\u0437 &quot;\u0430\u0440\u0433\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u0432&quot;, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0430\u0436\u043d\u044b \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b.<\/p>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435:<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li><a href=\"#wctor-dtor-privacy\">-Wctor-dtor-privacy<\/a><\/li>\n<li><a href=\"#wnon-virtual-dtor\">-Wnon-virtual-dtor<\/a><\/li>\n<li><a href=\"#wold-style-cast\">-Wold-style-cast<\/a><\/li>\n<li><a href=\"#woverloaded-virtual\">-Woverloaded-virtual<\/a><\/li>\n<li><a href=\"#wsign-promo\">-Wsign-promo<\/a><\/li>\n<li><a href=\"#wduplicated-branches\">-Wduplicated-branches<\/a><\/li>\n<li><a href=\"#wduplicated-cond\">-Wduplicated-cond<\/a><\/li>\n<li><a href=\"#wfloat-equal\">-Wfloat-equal<\/a><\/li>\n<li><a href=\"#wshadow-compatible-local\">-Wshadow=compatible-local<\/a><\/li>\n<li><a href=\"#wcast-qual\">-Wcast-qual<\/a><\/li>\n<li><a href=\"#wconversion\">-Wconversion<\/a><\/li>\n<li><a href=\"#wzero-as-null-pointer-constant\">-Wzero-as-null-pointer-constant<\/a><\/li>\n<li><a href=\"#wextra-semi\">-Wextra-semi<\/a><\/li>\n<li><a href=\"#wsign-conversion\">-Wsign-conversion<\/a><\/li>\n<li><a href=\"#wlogical-op\">-Wlogical-op<\/a><\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p>  <a name=\"wctor-dtor-privacy\"><\/a>  <\/p>\n<h3 id=\"-wctor-dtor-privacyneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wctor-dtor-privacy<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u0438 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u0437\u0430\u043a\u0440\u044b\u0442\u044b, \u0430 \u0434\u0440\u0443\u0437\u0435\u0439 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0447\u043b\u0435\u043d\u043e\u0432 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class base {     base () {};     ~base() {}; };  int main () { }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc:1:7: warning: 'class base' only defines a private destructor and has no friends [-Wctor-dtor-privacy]     1 | class base       |       ^~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0443 \u043a\u043b\u0430\u0441\u0441\u0430 \u0435\u0441\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u0447\u043b\u0435\u043d\u044b, \u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439.<\/p>\n<p>  <a name=\"wnon-virtual-dtor\"><\/a>  <\/p>\n<h3 id=\"-wnon-virtual-dtorneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wnon-virtual-dtor<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u043a\u043b\u0430\u0441\u0441\u0430 \u0435\u0441\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u0447\u043b\u0435\u043d\u044b, \u043d\u043e \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439. \u041e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct base {     virtual void f (int) {}     ~base() {}; };  int main () { }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc:1:8: warning: 'struct base' has virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]     1 | struct base       |        ^~~~<\/code><\/pre>\n<p>  <a name=\"wold-style-cast\"><\/a>  <\/p>\n<h3 id=\"-wold-style-castneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wold-style-cast<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0442\u0438\u043f\u043e\u0432 \u0432 \u0441\u0442\u0438\u043b\u0435 \u044f\u0437\u044b\u043a\u0430 C. \u0412 \u043f\u043b\u044e\u0441\u0430\u0445 \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0438 \u0443\u0436\u0430\u0441\u043d\u044b\u0435 <code>static_cast<\/code>, <code>dynamic_cast<\/code>, <code>reinterpret_cast<\/code> \u0438 <code>const_cast<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043e\u043b\u0435\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b \u0438 \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u044b. \u0421\u0438\u0448\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0438 \u2014 \u043e, \u0443\u0436\u0430\u0441, \u2014 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439. \u041b\u0443\u0447\u0448\u0435 \u0435\u0433\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u043e\u0431\u0449\u0435.<\/p>\n<p>  <a name=\"woverloaded-virtual\"><\/a>  <\/p>\n<h3 id=\"-woverloaded-virtualneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Woverloaded-virtual<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435-\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">struct base {     virtual void f (int) {} };  struct derived: base {     void f () {}; };  int main () { }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc:3:18: warning: 'virtual void base::f(int)' was hidden [-Woverloaded-virtual]     3 |     virtual void f (int) {}       |                  ^ prog.cc:8:10: warning:   by 'void derived::f()' [-Woverloaded-virtual]     8 |     void f () {};       |          ^<\/code><\/pre>\n<p>  <a name=\"wsign-promo\"><\/a>  <\/p>\n<h3 id=\"-wsign-promoneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wsign-promo<\/a><\/h3>\n<p>  <\/p>\n<p>\u041a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0444\u043b\u0430\u0433. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u043c \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void f (int) {} void f (unsigned) {}  int main () {     unsigned short x = 7;     f(x); }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:7:8: warning: passing 'short unsigned int' chooses 'int' over 'unsigned int' [-Wsign-promo]     7 |     f(x);       |        ^ prog.cc:7:8: warning:   in call to 'void f(int)' [-Wsign-promo]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0445\u043e\u0442\u0435\u043b\u0438-\u0442\u0430\u043a\u0438 \u043f\u043e\u0437\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0443, \u0430 \u043d\u0435 \u043f\u0435\u0440\u0432\u0443\u044e. \u0410 \u0435\u0441\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043f\u0435\u0440\u0432\u0443\u044e, \u0442\u043e \u0431\u0443\u0434\u044c\u0442\u0435 \u043b\u044e\u0431\u0435\u0437\u043d\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u044f\u0432\u043d\u043e.<\/p>\n<p>  <a name=\"wduplicated-branches\"><\/a>  <\/p>\n<h3 id=\"-wduplicated-branchesneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wduplicated-branches<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0435\u0442\u0432\u0438 <code>if<\/code> \u0438 <code>else<\/code> \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     if (true)         return 0;     else         return 0; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:3:5: warning: this condition has identical branches [-Wduplicated-branches]     3 |     if (true)       |     ^~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <code>?:<\/code> \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434 \u043f\u0440\u0438\u0446\u0435\u043b\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     auto x = true ? 4 : 4; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:3:19: warning: this condition has identical branches [-Wduplicated-branches]     3 |     auto x = true ? 4 : 4;       |              ~~~~~^~~~~~~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043c\u0435\u043d\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0430\u044f \u0437\u0430\u0433\u0430\u0434\u043a\u0430, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0451\u043d \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432 <code>-Wall<\/code>, \u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u0421\u043c. \u0442\u0430\u043a\u0436\u0435 <a href=\"#wduplicated-cond\"><code>-Wduplicated-cond<\/code><\/a>.<\/p>\n<p>  <a name=\"wduplicated-cond\"><\/a>  <\/p>\n<h3 id=\"-wduplicated-condneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wduplicated-cond<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0430\u0445 <code>if-else-if<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     auto x = 6;     if (x &gt; 7) {return 0;}     else if (x &gt; 7) {return 1;} }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:10: warning: duplicated 'if' condition [-Wduplicated-cond]     5 |     else if (x &gt; 7) {return 1;}       |          ^~ prog.cc:4:5: note: previously used here     4 |     if (x &gt; 7) {return 0;}       |     ^~<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u043c. \u0442\u0430\u043a\u0436\u0435 <a href=\"#wduplicated-branches\"><code>-Wduplicated-branches<\/code><\/a>.<\/p>\n<p>  <a name=\"wfloat-equal\"><\/a>  <\/p>\n<h3 id=\"-wfloat-equalneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wfloat-equal<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430, \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0441 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e (\u0442\u0430\u043a\u043e\u0435 \u0440\u0435\u0434\u043a\u043e, \u043d\u043e \u0431\u044b\u0432\u0430\u0435\u0442), \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/utility\/functional\/equal_to\" rel=\"nofollow\"><code>std::equal_to<\/code><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<p>  <a name=\"wshadow-compatible-local\"><\/a>  <\/p>\n<h3 id=\"-wshadowcompatible-localneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wshadow=compatible-local<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043e\u043f\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0434\u0430\u0451\u0442 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u0440\u0443\u0433\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043e\u043d\u0438 \u0438\u043c\u0435\u044e\u0442 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0442\u0438\u043f\u044b.<\/p>\n<p>  <a name=\"wcast-qual\"><\/a>  <\/p>\n<h3 id=\"-wcast-qualneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wcast-qual<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c <code>const<\/code>.<\/p>\n<p>  <a name=\"wconversion\"><\/a>  <\/p>\n<h3 id=\"-wconversionneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wconversion<\/a><\/h3>\n<p>  <\/p>\n<p>\u041e\u0447\u0435\u043d\u044c, \u043e\u0447\u0435\u043d\u044c, \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u043b\u0430\u0433. \u041e\u043d \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u044f\u0432\u043d\u044b\u0445 \u0441\u0443\u0436\u0430\u044e\u0449\u0438\u0445 (\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0438\u0445 \u043a \u043f\u043e\u0442\u0435\u0440\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438) \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     double x = 4.5;     int y = x; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:12:13: warning: conversion from 'double' to 'int' may change value [-Wfloat-conversion]    12 |     int y = x;       |             ^<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/p>\n<p>  <a name=\"wzero-as-null-pointer-constant\"><\/a>  <\/p>\n<h3 id=\"-wzero-as-null-pointer-constantneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wzero-as-null-pointer-constant<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0443\u043b\u044f \u0432\u043c\u0435\u0441\u0442\u043e <code>nullptr<\/code>.<\/p>\n<p>  <a name=\"wextra-semi\"><\/a>  <\/p>\n<h3 id=\"-wextra-semineed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wextra-semi<\/a><\/h3>\n<p>  <\/p>\n<p>\u0424\u043b\u0430\u0433 \u0434\u043b\u044f \u043f\u0435\u0434\u0430\u043d\u0442\u043e\u0432. \u0421\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u043b\u0438\u0448\u043d\u0435\u0439 \u0442\u043e\u0447\u043a\u0435 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u0447\u043b\u0435\u043d\u0430.<\/p>\n<p>  <a name=\"wsign-conversion\"><\/a>  <\/p>\n<h3 id=\"-wsign-conversionneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wsign-conversion<\/a><\/h3>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0438 <code>-Wconversion<\/code> \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u044f\u0432\u043d\u044b\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     signed si = -8;     unsigned ui;     ui = si; }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:5:10: warning: conversion to 'unsigned int' from 'int' may change the sign of the result [-Wsign-conversion]     5 |     ui = si;       |          ^~<\/code><\/pre>\n<p>  <a name=\"wlogical-op\"><\/a>  <\/p>\n<h3 id=\"-wlogical-opneed-moar-warnings\"><a href=\"#need-moar-warnings\">-Wlogical-op<\/a><\/h3>\n<p>  <\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e &quot;\u0418&quot; \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 &quot;\u0418&quot;, \u0438\u043b\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">int main () {     int a = 8;     if (a &lt; 0 &amp;&amp; a &lt; 0)     {         return 1;     } }<\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"plaintext\">prog.cc: In function 'int main()': prog.cc:4:15: warning: logical 'and' of equal expressions [-Wlogical-op]      if (a &lt; 0 &amp;&amp; a &lt; 0)          ~~~~~~^~~~~~~~<\/code><\/pre>\n<p>  <a name=\"werror\"><\/a>  <\/p>\n<h2 id=\"-werrorcontents\"><a href=\"#contents\">-Werror<\/a><\/h2>\n<p>  <\/p>\n<p>\u0421 \u044d\u0442\u043e\u0433\u043e, \u0432\u043e\u043e\u0431\u0449\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0441\u0442\u043e\u0438\u043b\u043e \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c. \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u043b\u0430\u0433 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438. \u041a\u043e\u0434 \u043d\u0435 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u0435\u0435\u0442 \u043c\u0430\u043b\u043e \u0441\u043c\u044b\u0441\u043b\u0430. \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043c\u044b\u0441\u043b\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435, \u0438 \u0438\u0445 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e, \u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0432 \u0447\u0438\u0441\u0442\u043e\u0442\u0435.<\/p>\n<p>  <\/p>\n<blockquote><p>\u0412 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a <code>-Werror<\/code> \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u043b\u0430\u0433 <code>-pedantic-errors<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 <code>-Wpedantic -Werror<\/code>.<\/p>\n<p>  \u0414\u0430, \u0432\u0441\u0451 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e.<\/p><\/blockquote>\n<p>  <a name=\"summary\"><\/a>  <\/p>\n<h2 id=\"zaklyucheniecontents\"><a href=\"#contents\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/h2>\n<p>  <\/p>\n<p>\u0420\u0435\u0437\u044e\u043c\u0438\u0440\u0443\u044f, \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 GCC (Clang \u043a\u043e\u0435-\u0447\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0443\u043c\u0435\u0435\u0442, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e) \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u043b\u0430\u0433\u043e\u0432, \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044f \u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">-Werror -pedantic-errors  -Wall -Wextra -Wpedantic  -Wcast-align -Wcast-qual -Wconversion -Wctor-dtor-privacy -Wduplicated-branches -Wduplicated-cond -Wextra-semi -Wfloat-equal -Wlogical-op -Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wsign-conversion -Wsign-promo<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430, \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u043b\u0430\u0433\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u043b\u0438\u0448\u043d\u0438\u043c\u0438. \u041d\u043e \u044f\u0432\u043d\u043e\u0435 \u043b\u0443\u0447\u0448\u0435 \u043d\u0435\u044f\u0432\u043d\u043e\u0433\u043e. \u0415\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0448\u044c \u2014 \u0434\u0435\u043b\u0430\u0439. \u041d\u043e \u0434\u0435\u043b\u0430\u0439 \u044d\u0442\u043e \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u043c \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u0442\u044b \u0438 \u0445\u043e\u0442\u0435\u043b. \u041f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0432 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0445\u043e\u0442\u044f \u0431\u044b \u043d\u0435\u0434\u0435\u043b\u044e, \u0432\u044b \u043f\u043e\u0439\u043c\u0451\u0442\u0435, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u0438 \u0443\u0436\u0435 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041b\u044e\u0431\u0438\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0439\u0442\u0435 \u0435\u043c\u0443 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0432\u0430\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>  <a name=\"links\"><\/a>  <\/p>\n<h2 id=\"ssylkicontents\"><a href=\"#contents\">\u0421\u0441\u044b\u043b\u043a\u0438<\/a><\/h2>\n<p>  <\/p>\n<ol>\n<li><a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc-9.2.0\/gcc\/\" rel=\"nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 GCC<\/a><\/li>\n<li><a href=\"https:\/\/clang.llvm.org\/docs\/UsersManual.html\" rel=\"nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 Clang<\/a><\/li>\n<\/ol>\n<\/div>\n<p> \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\/post\/490850\/\"> https:\/\/habr.com\/ru\/post\/490850\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/490850\/\">\n<h2 id=\"predislovie\">\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a. \u0418 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0430\u044f \u0438\u0445 \u0447\u0430\u0441\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u041e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u044e\u0442 \u043a \u044f\u0437\u044b\u043a\u0443 C++ \u0432 \u044d\u0442\u0438\u0445 \u0432\u0430\u0448\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u0445, \u2014 \u043f\u0440\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c, \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0443 \u043f\u043e \u043d\u043e\u0433\u0430\u043c \u0438 \u0442.\u043f., \u2014 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u043a \u0442\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u044f\u043c, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0434\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043b\u0451\u0433\u043a\u0438\u043c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0430\u043b\u044c\u0446\u0435\u0432 \u043f\u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u0443 \u0432\u043e\u043f\u0438\u044e\u0449\u0443\u044e \u043d\u0435\u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u044c, \u0438 \u043f\u0440\u043e\u043b\u044c\u0451\u043c \u0441\u0432\u0435\u0442 \u0438\u0441\u0442\u0438\u043d\u044b \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043f\u043e \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u043e\u0448\u0438\u0431\u043e\u043a.<\/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-299670","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299670","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=299670"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/299670\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=299670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=299670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=299670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}