<!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-thumbsize-clientpref-standard" lang="zh" dir="ltr"><head>
    <meta charset="UTF-8">
    <title>Tgmath.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://zh.wikipedia.org/wiki/Tgmath.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 href="./_mw_/ext.gadget.large-font.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.text-spacing.css" rel="stylesheet" type="text/css">
    <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-Tgmath_h rootpage-Tgmath_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">tgmath.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="zh" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="zh" dir="ltr"><div id="noteTA-4de8e905" class="noteTA"><div class="noteTA-group"><div data-noteta-group-source="module" data-noteta-group="IT"></div></div><div class="noteTA-local"><div data-noteta-code="zh-hans:宏; zh-hant:巨集;"></div></div></div>
<p class="mw-empty-elt">
</p>
<style data-mw-deduplicate="TemplateStyles:r84265675">
/* start https://zh.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:" :"}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist-pipe dd::after,.mw-parser-output .hlist-pipe li::after{content:" | ";font-weight:normal}.mw-parser-output .hlist-hyphen dd::after,.mw-parser-output .hlist-hyphen li::after{content:" - ";font-weight:normal}.mw-parser-output .hlist-comma dd::after,.mw-parser-output .hlist-comma li::after{content:"、";font-weight:normal}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:"（"counter(listitem)"\a0 "}.mw-parser-output ul.cslist,.mw-parser-output ul.sslist{margin:0;padding:0;display:inline-block;list-style:none}.mw-parser-output .cslist li,.mw-parser-output .sslist li{margin:0;display:inline-block}.mw-parser-output .cslist li::after{content:"，"}.mw-parser-output .sslist li::after{content:"；"}.mw-parser-output .cslist li:last-child::after,.mw-parser-output .sslist li:last-child::after{content:none}


/* end   https://zh.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r84913072">
/* start https://zh.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:100%;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-subgroup,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-pretitle,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-heading,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-above,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-below{background:inherit!important;color:inherit!important;border-color:#54595d!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar a:not(.new):not(.mw-selflink):link{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-subgroup,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-pretitle,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-heading,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-above,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-below{background:inherit!important;color:inherit!important;border-color:#54595d!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar a:not(.new):not(.mw-selflink):link{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}


/* end   https://zh.wikipedia.org/ */
</style><table class="sidebar nomobile nowraplinks"><tbody><tr><th class="sidebar-title"><a href="C%E6%A8%99%E6%BA%96%E5%87%BD%E5%BC%8F%E5%BA%AB" title="C標準函式庫">C标准函数库</a></th></tr><tr><th class="sidebar-heading">
一般</th></tr><tr><td class="sidebar-content" style="text-align: left">
<ul><li><a href="Stdlib.h#数据类型" title="Stdlib.h">数据类型</a></li>
<li><a href="Ctype.h" title="Ctype.h">字符类型</a></li>
<li><a href="String.h" title="String.h">字符串</a></li>
<li><a href="Math.h" title="Math.h">数学</a></li>
<li><a href="Stdio.h" title="Stdio.h">文件输入/输出</a></li>
<li><a href="Time.h" title="Time.h">日期/时间</a></li>
<li><a href="Locale.h" title="Locale.h">本地化</a></li>
<li><a href="Stdlib.h#函数" title="Stdlib.h">内存分配</a></li>
<li><a href="Stdlib.h#函数" title="Stdlib.h">过程控制</a></li>
<li><a href="Signal.h" title="Signal.h">信号</a></li>
<li><a href="C%E6%9B%BF%E4%BB%A3%E6%A0%87%E8%AE%B0" title="C替代标记">替代标记</a></li></ul></td>
</tr><tr><th class="sidebar-heading">
杂项</th></tr><tr><td class="sidebar-content" style="text-align: left">
<ul><li><code>&lt;<a href="Assert.h" title="Assert.h">assert.h</a>&gt;</code></li>
<li><code>&lt;<a href="Errno.h" title="Errno.h">errno.h</a>&gt;</code></li>
<li><code>&lt;<a href="Setjmp.h" title="Setjmp.h">setjmp.h</a>&gt;</code></li>
<li><code>&lt;<a href="Stdarg.h" title="Stdarg.h">stdarg.h</a>&gt;</code></li></ul></td>
</tr><tr><td class="sidebar-navbar" style="line-height:1.6"><style data-mw-deduplicate="TemplateStyles:r84244141">
/* start https://zh.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:110%;margin:0 8em}.mw-parser-output .navbar-ct-mini{font-size:110%;margin:0 5em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end   https://zh.wikipedia.org/ */
</style></td></tr></tbody></table> 
<p><b><code>tgmath.h</code></b>是<a href="C%E6%A8%99%E6%BA%96%E5%87%BD%E6%95%B8%E5%BA%AB" class="mw-redirect" title="C標準函數庫">C標準函数庫</a>中的<a href="%E5%A4%B4%E6%96%87%E4%BB%B6" title="头文件">头文件</a>，提供了数学函数的类型通用的宏定义。使用这些宏调用数学函数时，会根据参数自动对应到类型适合的数学函数，其效果类似于<a href="C%2B%2B" title="C++">C++</a>的<a href="%E5%87%BD%E6%95%B0%E9%87%8D%E8%BD%BD" title="函数重载">函数重载</a>，使得编程者不必繁琐地去调用数学库函数的单精度、双精度、长双精度、单精度复数、双精度复数、长双精度复数等各个版本。
</p>

<div class="mw-heading mw-heading2"><h2 id="宏定义"><span id=".E5.AE.8F.E5.AE.9A.E4.B9.89"></span>宏定义</h2></div>
<div class="mw-heading mw-heading3"><h3 id="math.h与complex.h共有"><span id="math.h.E4.B8.8Ecomplex.h.E5.85.B1.E6.9C.89"></span>math.h与complex.h共有</h3></div>
<p>一些常见数学函数既在<code>math.h</code>有实数版本，也在<code>complex.h</code>有复数版本。<code>tgmath.h</code>提供了下述类型通用的宏定义：
</p>
<ul><li>acos</li>
<li>asin</li>
<li>atan</li>
<li>acosh</li>
<li>asinh</li>
<li>atanh</li>
<li>cos</li>
<li>sin</li>
<li>tan</li>
<li>cosh</li>
<li>sinh</li>
<li>tanh</li>
<li>exp</li>
<li>log</li>
<li>pow</li>
<li>sqrt</li>
<li>fabs</li></ul>
<div class="mw-heading mw-heading3"><h3 id="math.h专用"><span id="math.h.E4.B8.93.E7.94.A8"></span>math.h专用</h3></div>
<p>对于包含在<code>math.h</code>中，但在<code>complex.h</code>中没有对应的函数，提供了下述通用类型的宏：
</p>
<ul><li>atan2</li>
<li>cbrt</li>
<li>ceil</li>
<li>copysign</li>
<li>erf</li>
<li>erfc</li>
<li>exp2</li>
<li>expm1</li>
<li>fdim</li>
<li>floor</li>
<li>fma</li>
<li>fmax</li>
<li>fmin</li>
<li>fmod</li>
<li>frexp</li>
<li>hypot</li>
<li>ilogb</li>
<li>ldexp</li>
<li>lgamma</li>
<li>llrint</li>
<li>llround</li>
<li>log10</li>
<li>log1p</li>
<li>log2</li>
<li>logb</li>
<li>lrint</li>
<li>lround</li>
<li>nearbyint</li>
<li>nextafter</li>
<li>nexttoward</li>
<li>remainder</li>
<li>remquo</li>
<li>rint</li>
<li>round</li>
<li>scalbn</li>
<li>scalbln</li>
<li>tgamma</li>
<li>trunc</li></ul>
<div class="mw-heading mw-heading3"><h3 id="complex.h专用"><span id="complex.h.E4.B8.93.E7.94.A8"></span>complex.h专用</h3></div>
<p>对于包含在<code>complex.h</code>中，但在<code>math.h</code>中没有对应的函数，提供了下述通用类型的宏：
</p>
<ul><li>carg</li>
<li>cimag</li>
<li>conj</li>
<li>cproj</li>
<li>creal</li></ul>
<div class="mw-heading mw-heading2"><h2 id="例子"><span id=".E4.BE.8B.E5.AD.90"></span>例子</h2></div>
<div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;tgmath.h&gt;</span>
<span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">;</span>
<span class="kt">float</span><span class="w"> </span><span class="n">f</span><span class="p">;</span>
<span class="kt">double</span><span class="w"> </span><span class="n">d</span><span class="p">;</span>
<span class="kt">long</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">ld</span><span class="p">;</span>
<span class="kt">float</span><span class="w"> </span><span class="n">complex</span><span class="w"> </span><span class="n">fc</span><span class="p">;</span>
<span class="kt">double</span><span class="w"> </span><span class="n">complex</span><span class="w"> </span><span class="n">dc</span><span class="p">;</span>
<span class="kt">long</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">complex</span><span class="w"> </span><span class="n">ldc</span><span class="p">;</span>

<span class="w">              </span><span class="c1">//实际调用了：</span>
<span class="n">exp</span><span class="p">(</span><span class="n">n</span><span class="p">);</span><span class="w">   </span><span class="c1">//exp(n)</span>
<span class="n">acosh</span><span class="p">(</span><span class="n">f</span><span class="p">);</span><span class="w">   </span><span class="c1">// acoshf(f)</span>
<span class="n">sin</span><span class="p">(</span><span class="n">d</span><span class="p">);</span><span class="w">   </span><span class="c1">// sin(d) </span>
<span class="n">atan</span><span class="p">(</span><span class="n">ld</span><span class="p">);</span><span class="w">   </span><span class="c1">// atanl(ld)</span>
<span class="n">log</span><span class="p">(</span><span class="n">fc</span><span class="p">);</span><span class="w">   </span><span class="c1">// clogf(fc)</span>
<span class="n">sqrt</span><span class="p">(</span><span class="n">dc</span><span class="p">);</span><span class="w">   </span><span class="c1">// csqrt(dc)</span>
<span class="n">pow</span><span class="p">(</span><span class="n">ldc</span><span class="p">,</span><span class="w"> </span><span class="n">f</span><span class="p">);</span><span class="w">   </span><span class="c1">// cpowl(ldc, f)</span>
<span class="n">remainder</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">);</span><span class="w">   </span><span class="c1">// remainder(n, n) </span>
<span class="n">nextafter</span><span class="p">(</span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="n">f</span><span class="p">);</span><span class="w">   </span><span class="c1">// nextafter(d, f) </span>
<span class="n">nexttoward</span><span class="p">(</span><span class="n">f</span><span class="p">,</span><span class="w"> </span><span class="n">ld</span><span class="p">);</span><span class="w">   </span><span class="c1">// nexttowardf(f, ld)</span>
<span class="n">copysign</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">ld</span><span class="p">);</span><span class="w">   </span><span class="c1">// copysignl(n, ld)</span>
<span class="n">ceil</span><span class="p">(</span><span class="n">fc</span><span class="p">);</span><span class="w">   </span><span class="c1">// 未定义</span>
<span class="n">rint</span><span class="p">(</span><span class="n">dc</span><span class="p">);</span><span class="w">   </span><span class="c1">// 未定义</span>
<span class="n">fmax</span><span class="p">(</span><span class="n">ldc</span><span class="p">,</span><span class="w"> </span><span class="n">ld</span><span class="p">);</span><span class="w">   </span><span class="c1">// 未定义</span>
<span class="n">carg</span><span class="p">(</span><span class="n">n</span><span class="p">);</span><span class="w">   </span><span class="c1">// carg(n) </span>
<span class="n">cproj</span><span class="p">(</span><span class="n">f</span><span class="p">);</span><span class="w">   </span><span class="c1">// cprojf(f)</span>
<span class="n">creal</span><span class="p">(</span><span class="n">d</span><span class="p">);</span><span class="w">   </span><span class="c1">// creal(d) </span>
<span class="n">cimag</span><span class="p">(</span><span class="n">ld</span><span class="p">);</span><span class="w">   </span><span class="c1">// cimagl(ld)</span>
<span class="n">cabs</span><span class="p">(</span><span class="n">fc</span><span class="p">);</span><span class="w">   </span><span class="c1">// cabsf(fc)</span>
<span class="n">carg</span><span class="p">(</span><span class="n">dc</span><span class="p">);</span><span class="w">   </span><span class="c1">// carg(dc) </span>
<span class="n">cproj</span><span class="p">(</span><span class="n">ldc</span><span class="p">);</span><span class="w">   </span><span class="c1">// cprojl(ldc)</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="参考文献"><span id=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE"></span>参考文献</h2></div>
<div class="reflist" style="list-style-type: decimal;">
</div></div><!--htdig_noindex--><div><div class="zim-footer">
    This article is issued from <a class="external text" title="Last edited on 2020-07-07" href="https://zh.wikipedia.org/wiki/?title=Tgmath.h&amp;oldid=60465578">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh">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>