<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Assert.h</id>
	<title>Assert.h - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Assert.h"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Assert.h&amp;action=history"/>
	<updated>2026-07-15T12:33:34Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Assert.h&amp;diff=526846&amp;oldid=prev</id>
		<title>imported&gt;Cewbot：​機器人作業請求: source 改 syntaxhighlight (Category:使用已弃用source标签的页面) - log</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Assert.h&amp;diff=526846&amp;oldid=prev"/>
		<updated>2020-07-07T03:10:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/wiki/Special:%E5%B7%AE%E5%BC%82/60461710#source_改_syntaxhighlight&quot; title=&quot;Special:差异/60461710&quot;&gt;機器人作業請求&lt;/a&gt;: source 改 syntaxhighlight (Category:使用已弃用source标签的页面) - &lt;a href=&quot;/index.php?title=User:Cewbot/log/20190913&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Cewbot/log/20190913（页面不存在）&quot;&gt;log&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|1=zh-hans:宏; zh-hant:巨集;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{lowercase|title=assert.h}}&lt;br /&gt;
&lt;br /&gt;
{{C_Standard_library}} &amp;lt;!-- to edit this template go to [[template:C_Standard_library]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;assert.h&amp;lt;/code&amp;gt;是[[C標準函数庫]]中的[[头文件]]。其中定义了&amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;宏用于程序调试。&lt;br /&gt;
&lt;br /&gt;
在C標準函数庫中，它是個非常特別的头文件，你可以將它引入數次以獲得不同的效果，此效果依引入時是否以定義NDEBUG而定。&lt;br /&gt;
&lt;br /&gt;
== 宏 ==&lt;br /&gt;
&amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;是一个诊断宏，用于动态辨识程序的逻辑错误条件。其原型是：&lt;br /&gt;
&amp;lt;code&amp;gt;void assert(int expression);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果宏的参数求值结果为非零值，则不做任何操作（no action）；如果是零值，用[[宽字符]]打印诊断消息，然后调用&amp;lt;code&amp;gt;abort()&amp;lt;/code&amp;gt;。诊断消息包括：&lt;br /&gt;
* 源文件名字（在&amp;lt;code&amp;gt;[[stdlib.h]]&amp;lt;/code&amp;gt;中声明的宏&amp;lt;code&amp;gt;__FILE__&amp;lt;/code&amp;gt;的值）&lt;br /&gt;
* 所在的源文件的行号（在&amp;lt;code&amp;gt;stdlib.h&amp;lt;/code&amp;gt;中声明的宏&amp;lt;code&amp;gt;__LINE__&amp;lt;/code&amp;gt;的值） &lt;br /&gt;
* 所在的函数名（在stdlib.h中声明的宏&amp;lt;code&amp;gt;__func__&amp;lt;/code&amp;gt;的值），这是[[C99]]新增的特性&lt;br /&gt;
* 求值结果为0的表达式&lt;br /&gt;
诊断信息的显示目标依赖于被调用程序的类型。如果是控制台程序，诊断信息显示在[[stderr]]设备；如果是基于窗口的程序，&amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;产生一个Windows MessageBox来显示诊断信息。&lt;br /&gt;
&lt;br /&gt;
程序可以屏蔽掉所有的&amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;而无需修改源代码。这只需要在命令行调用C语言的编译器时添加宏定义的命令行选项，定义&amp;lt;code&amp;gt;NDEBUG&amp;lt;/code&amp;gt;宏;也可以在源程序程序引入&amp;lt;code&amp;gt;&amp;lt;assert.h&amp;gt;&amp;lt;/code&amp;gt;之前就使用&amp;lt;code&amp;gt;#define NDEBUG&amp;lt;/code&amp;gt;来定义宏。被屏蔽的&amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;甚至不对传递给它的参数表达式求值，因此使用&amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;时其参数表达式不能有副作用（side-effects）。&lt;br /&gt;
==例程==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
{&lt;br /&gt;
    FILE *fd;&lt;br /&gt;
&lt;br /&gt;
    fd = fopen (&amp;quot;/home/user/file.txt&amp;quot;, &amp;quot;r&amp;quot;);&lt;br /&gt;
    assert (fd);&lt;br /&gt;
    fclose (fd);&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:C标准库头文件]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cewbot</name></author>
	</entry>
</feed>