<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-menu-disabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-os vector-sticky-header-enabled skin-theme-clientpref-thumb-standard" lang="uk" dir="ltr"><head>
    <meta charset="UTF-8">
    <title>Assert.h</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" type="image/png" href="./_res_/favicon.png">
    <link rel="canonical" href="https://uk.wikipedia.org/wiki/Assert.h"> <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
    <meta name="ResourceLoaderDynamicStyles" content="">
    
    <link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
    <link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
    <link rel="stylesheet" type="text/css" href="./_res_/footer.css">
    <link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
  </head>
  <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Assert_h rootpage-Assert_h skin-vector-2022 action-view">
    <div class="mw-page-container">
      <div class="mw-page-container-inner">
        <div class="mw-content-container">
          <main id="content" class="mw-body">
            <header class="mw-body-header vector-page-titlebar">
              <h1 id="firstHeading" class="firstHeading mw-first-heading">assert.h</h1>
            </header>
            <a id="top"></a>
            <div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
              <div id="contentSub">
                <div id="mw-content-subtitle"></div>
              </div>
              <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="uk" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="uk" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r44188005">
/* start https://uk.wikipedia.org/ */


.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}


/* end   https://uk.wikipedia.org/ */
</style><table class="sidebar nomobile nowraplinks" role="navigation" style="width: auto;"><tbody><tr><th class="sidebar-heading">
<a href="%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0_%D0%B1%D1%96%D0%B1%D0%BB%D1%96%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%BC%D0%BE%D0%B2%D0%B8_C" title="Стандартна бібліотека мови C">Заголовні файли C</a></th></tr><tr><td class="sidebar-content" style="text-align: left;">
<ul><li><a class="mw-selflink selflink">assert.h</a></li>
<li><a href="Complex.h" title="Complex.h">complex.h</a></li>
<li><a href="Ctype.h" title="Ctype.h">ctype.h</a></li>
<li><a href="Errno.h" title="Errno.h">errno.h</a></li>
<li><a href="Fenv.h" title="Fenv.h">fenv.h</a></li>
<li><a href="Float.h" title="Float.h">float.h</a></li>
<li><a href="Inttypes.h" title="Inttypes.h">inttypes.h</a></li>
<li><a href="Iso646.h" title="Iso646.h">iso646.h</a></li>
<li><a href="Limits.h" title="Limits.h">limits.h</a></li>
<li><a href="Locale.h" title="Locale.h">locale.h</a></li>
<li><a href="Math.h" title="Math.h">math.h</a></li>
<li>setjmp.h</li>
<li><a href="Signal.h" title="Signal.h">signal.h</a></li>
<li>stdarg.h</li>
<li><a href="Stdbool.h" title="Stdbool.h">stdbool.h</a></li>
<li><a href="Stddef.h" title="Stddef.h">stddef.h</a></li>
<li><a href="Stdint.h" title="Stdint.h">stdint.h</a></li>
<li><a href="Stdio.h" title="Stdio.h">stdio.h</a></li>
<li>stdlib.h</li>
<li><a href="String.h" title="String.h">string.h</a></li>
<li>tgmath.h</li>
<li><a href="Time.h" title="Time.h">time.h</a></li>
<li><a href="Wchar.h" title="Wchar.h">wchar.h</a></li>
<li><a href="Wctype.h" title="Wctype.h">wctype.h</a></li></ul></td>
</tr></tbody></table>
<p><b>assert.h</b> — заголовний файл <a href="%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0_%D0%B1%D1%96%D0%B1%D0%BB%D1%96%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%A1" class="mw-redirect" title="Стандартна бібліотека С">стандартної бібліотеки</a> <a href="%D0%A1_(%D0%BC%D0%BE%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" class="mw-redirect" title="С (мова програмування)">мови програмування С</a>, в якому оголошується макрос препроцесора мови С <code>assert()</code>. Цей макрос реалізує <a href="%D0%A2%D0%B2%D0%B5%D1%80%D0%B4%D0%B6%D0%B5%D0%BD%D0%BD%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" class="mw-redirect" title="Твердження (програмування)">висловлювання</a>, котре може використовуватись для отримання припущень зроблених програмою.
</p><p>Макрос <code>assert()</code> додає до програми процедуру діагностики. Після виконання, якщо визначення хибне (тобто, порівняння рівне 0), assert() пише інформацію про виклик, котрий виконався з помилкою на <a href="Stderr" class="mw-redirect" title="Stderr">stderr</a> і викликає функцію <code>abort()</code>. Інформація, котра пишеться на <a href="Stderr" class="mw-redirect" title="Stderr">stderr</a> включає у себе:
</p>
<ul><li>текст визначення, рівного 0</li>
<li>ім'я файлу з джерельним кодом (the predefined macro __FILE__)</li>
<li>рядок у файлу з джерельним текстом (the predefined macro __LINE__)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Використання"><span id=".D0.92.D0.B8.D0.BA.D0.BE.D1.80.D0.B8.D1.81.D1.82.D0.B0.D0.BD.D0.BD.D1.8F"></span>Використання</h2></div>
<p>Для того, щоб відключити перевірку не обов'язково вилучати з коду або коментувати оголошення макроса, достатньо лиш оголосити ще один макрос -- NDEBUG у програмі перед <code>#include &lt;assert.h&gt;</code>, тоді оголошення макроса <code>assert()</code> матиме такий вигляд:
</p>
<pre>#define assert(ignore)((void) 0)
</pre>
<p>а тому ніяк не впливатиме на роботу програми.
</p><p>Макрос <code>assert()</code> реалізований у вигляді макроса, а не функції. Якщо макрос <i>assert</i> забраний для можливості викликати саму функцію <i>assert</i>, то правильне <a href="%D0%9D%D0%B5%D0%B2%D0%B8%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B0_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D1%96%D0%BD%D0%BA%D0%B0" title="Невизначена поведінка">функціонування коду не гарантується</a>. 
</p>
<div class="mw-heading mw-heading3"><h3 id="Приклад_коду"><span id=".D0.9F.D1.80.D0.B8.D0.BA.D0.BB.D0.B0.D0.B4_.D0.BA.D0.BE.D0.B4.D1.83"></span>Приклад коду</h3></div>
<div class="mw-highlight mw-highlight-lang-c mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span class="linenos" data-line="1"></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;stdio.h&gt;</span>
<span class="linenos" data-line="2"></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;assert.h&gt;</span>
<span class="linenos" data-line="3"></span>
<span class="linenos" data-line="4"></span><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="linenos" data-line="5"></span><span class="p">{</span>
<span class="linenos" data-line="6"></span><span class="w">        </span><span class="kt">FILE</span><span class="w"> </span><span class="o">*</span><span class="n">fd</span><span class="p">;</span>
<span class="linenos" data-line="7"></span>
<span class="linenos" data-line="8"></span><span class="w">        </span><span class="n">fd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fopen</span><span class="w"> </span><span class="p">(</span><span class="s">"file.txt"</span><span class="p">,</span><span class="w"> </span><span class="s">"r"</span><span class="p">);</span>
<span class="linenos" data-line="9"></span><span class="w">        </span><span class="n">assert</span><span class="w"> </span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
<span class="linenos" data-line="10"></span><span class="w">        </span>
<span class="linenos" data-line="11"></span><span class="w">        </span><span class="n">fclose</span><span class="w"> </span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
<span class="linenos" data-line="12"></span>
<span class="linenos" data-line="13"></span><span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<span class="linenos" data-line="14"></span><span class="p">}</span>
</pre></div>
<p>У даному прикладі макрос <code>assert()</code> спрацює у випадку, якщо функція <code>fopen()</code> виконається з помилкою.
</p>
<div class="mw-heading mw-heading2"><h2 id="Посилання"><span id=".D0.9F.D0.BE.D1.81.D0.B8.D0.BB.D0.B0.D0.BD.D0.BD.D1.8F"></span>Посилання</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.opengroup.org/onlinepubs/000095399/functions/assert.html">assert.h</a> <small>[<a rel="nofollow" class="external text" href="https://web.archive.org/web/20081013185649/http://www.opengroup.org/onlinepubs/000095399/functions/assert.html">Архівовано</a> 13 жовтня 2008 у <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>.]</small> на OpenGroup</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
    This article is issued from <a class="external text" title="Last edited on 2022-09-17" href="https://uk.wikipedia.org/wiki/?title=Assert.h&amp;oldid=37139206">Вікіпедія</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.uk">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
            </div>
          </main>
        </div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>