C语言-调试程序的可变参数宏
 2021.10.29    |      C/C++    |     AilsonJack    |     暂无评论    |     185 views
By: Ailson Jack
Date: 2021-10-29
个人博客: http://www.only2fire.com/
<p style="text-indent: 2em;">在程序的开发和调试过程中,可以使用一个宏定义来代替printf输出调试信息,等程序开发完成之后,如果不需要调试信息,直接将宏定义为空就行,这样便于随时打开和关闭调试信息。这样的调试程序的宏一般是可变参数宏,因为打印函数printf是可变参数的,因此定义的宏也要求支持可变参数。</p><p style="text-indent: 2em;">可变参数宏可以接受可变数目的参数,就像可变参数的函数一样。可变参数宏也使用三个点(...)来表示宏的可变参数性。</p><p style="text-indent: 2em;">__VA_ARGS__ 宏是用来表示可变参数宏的可变参数的内容。简单的说就是将可变参数宏中的 ... 的内容原样传递给右边 __VA_ARGS__ 所在的位置。示例代码如下:</p><pre class="brush:cpp;toolbar:false PrismJs">/** &nbsp;*&nbsp;@file&nbsp;test.c &nbsp;*&nbsp;@author&nbsp;Ailson&nbsp;Jack&nbsp;(jackailson@foxmail.com) &nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blog:&nbsp;www.only2fire.com &nbsp;*&nbsp;@brief &nbsp;*&nbsp;@version&nbsp;1.0 &nbsp;*&nbsp;@date&nbsp;2021-10-29 &nbsp;* &nbsp;*&nbsp;@copyright&nbsp;Copyright&nbsp;(c)&nbsp;2021 &nbsp;* &nbsp;*/ #include&nbsp;&lt;stdio.h&gt; #define&nbsp;__DEBUG__ //&nbsp;调试程序的可变参数宏定义 #ifdef&nbsp;__DEBUG__ &nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;DEBUG_PRINT(...)&nbsp;&nbsp;&nbsp;&nbsp;printf(__VA_ARGS__) #else &nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;DEBUG_PRINT(...) #endif int&nbsp;main(void) { &nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*name&nbsp;=&nbsp;&quot;Ailson&nbsp;Jack&quot;; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;age&nbsp;=&nbsp;18; &nbsp;&nbsp;&nbsp;&nbsp;DEBUG_PRINT(&quot;name:%s&nbsp;age:%d\r\n&quot;,&nbsp;name,&nbsp;age); &nbsp;&nbsp;&nbsp;&nbsp;DEBUG_PRINT(&quot;blog:&nbsp;www.only2fire.com&quot;); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }</pre><p style="text-indent: 2em;">通过屏蔽或打开程序中的 __DEBUG__ 宏,可以让调试信息输出或者不输出。</p>
欢迎关注博主的公众号呀,精彩内容随时掌握:
热情邀请仔细浏览下博客中的广告,万一有对自己有用或感兴趣的呢。◕ᴗ◕。。
如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^,当然了能够赞赏博主,那就非常感谢啦!
注: 转载请注明出处,谢谢!^_^
转载请注明来源: 本文链接:  By: AilsonJack
C语言-调试程序的可变参数宏  |  说好一起走
暂无评论,要不要来个沙发
发表评论

 
Copyright © 2015~2023  说好一起走   保留所有权利   |  百度统计  蜀ICP备15004292号