下面这一句是 stm库中的一句话。

#define assert_param(expr) ((expr) ? (void)0 :

assert_failed((uint8_t *)__FILE__, __LINE__))

vc中在 文件 VC98\MFC\Include\AFX.H 中 有如下定义

注释::下文中的“\”

为连接符 下面这一段有几个知识点这里说其中一个。

本文说 程序中打TRACE的问题 很多人在程序中打的TRACE

在不打TRACE 是还是会执行一些代码影响程序的运行 是程序执行效率降低 下面这是 vc

中在调试程序时用到的 TRACE

#ifdef _DEBUG

#define

TRACE ::AfxTrace

#define

THIS_FILE __FILE__

#define ASSERT(f) \

do \

{ \

if (!(f) &&

AfxAssertFailedLine(THIS_FILE, __LINE__)) \

AfxDebugBreak(); \

} while (0) \

#define

VERIFY(f) ASSERT(f)

#define ASSERT_VALID(pOb) (::AfxAssertValidObject(pOb, THIS_FILE, __LINE__))

#define

DEBUG_ONLY(f) (f)

// The following trace macros are provided for backward

compatiblity

// (they also take a fixed number of parameters

which provides

// some amount of extra error

checking)

#define

TRACE0(sz) ::AfxTrace(_T("%s"), _T(sz))

#define TRACE1(sz,

p1) ::AfxTrace(_T(sz), p1)

#define TRACE2(sz, p1,

p2) ::AfxTrace(_T(sz), p1, p2)

#define TRACE3(sz, p1, p2, p3) ::AfxTrace(_T(sz),

p1, p2, p3)

// These AFX_DUMP macros also provided for backward

compatibility

#define AFX_DUMP0(dc, sz) dc

<< _T(sz)

#define AFX_DUMP1(dc, sz, p1) dc << _T(sz) << p1

#else // _DEBUG

#define

ASSERT(f) ((void)0)

#define

VERIFY(f) ((void)(f))

#define ASSERT_VALID(pOb) ((void)0)

#define

DEBUG_ONLY(f) ((void)0)

inline void AFX_CDECL AfxTrace(LPCTSTR, ...) { }

#define

TRACE 1 ? (void)0 : ::AfxTrace //重要的是这一句 在没有调试程序时TRACE表示为0

#define TRACE0(sz)

#define TRACE1(sz, p1)

#define TRACE2(sz, p1, p2)

#define TRACE3(sz, p1, p2, p3)

#endif // !_DEBUG

下面我们看看 开始的第一句程序

#define assert_param(expr) ((expr) ? (void)0 :

assert_failed((uint8_t *)__FILE__, __LINE__))

这是一句宏定义 当 expr不为“0”时 程序正常执行 当expr为“0”时

程序停止执行。

上面是C语言三目运算的简单应用

c语言三目运算程序,有C语言中三目运算符 联系到的 程序打trace相关推荐

  1. c语言三目运算错误,c语言中三目运算符有什么用

    三目运算符又称:三元运算符.条件运算符,用于根据二元条件的结果执行代码,可以有效的减少行代码的数量并提高应用程序的性能. c语言中三目运算符 三目运算符具有以下形式:表达1?表达2:表达3 说明:表达 ...

  2. c语言三种循环语句,C语言三种循环语句的功能等价性

    C语言程序中的.bile,dowhile,for三种循环语句在实现不同形式的循环功能上各具特色及优点,从而使C语言程序的循环功能准确简洁地实现了实际问题中不同形式及过程的循环要求,本文从一般逻辑关系上 ...

  3. c语言三种循环结构特点,c语言循环结构(c语言循环结构特点)

    1.while循环 while语句的一般形式为:while(表达式)语句.其中表达式是循环条件,语句为循环体.while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的. for语句循环1 fo ...

  4. c 语言三种正规循环,C语言复习题库

    34.C语言中函数的参数分为()和(). 35.当函数的数据类型省略时,默认的数据类型为()型. 36.在C语言中,正确的标识符是由()组成的,且由()开头的. 37.设有"int x=2, ...

  5. c语言三线程,如何用C语言实现多线程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Windows操作系统,C语言实现多线程: #include #include DWORD APIENTRY ThreadOne ( LPVOID thr ...

  6. java中的三目运算

    博主理解的三目运算 还是萌新小白的博主认为,三目运算和java逻辑中的if else 极为的相似,所以大家刚接触的时候完全可以把它认为就是if else! 想必大家一定都在代码中见过 a==b ? 1 ...

  7. VUE三目运算使用 :style与:class

    通常有些样式是根据动态实现,所以需要使用到三目运算来判断 :style三目运算表达式如下 <a :style={ '样式名': 三目运算符表达式 ? 'true样式值' : 'false样式值' ...

  8. python三目运算与匿名函数

    前言: 哈哈哈,又到了吐槽时间.今天南京真的是一秒入冬啊,博主的手指一到冬天就开始变的不是很灵活.996的工作制度还在继续,所以这次继续记录能快速结束的专题. 三目运算符: 在一些其它编程语言中呢三目 ...

  9. c语言单目运算符和三目,6、单目运算符 双目运算符 三目运算符() 及 优先级的探讨!...

    1.单目就是这个运算符只对一个变量进行操作 代表符号:!(逻辑非) ~(按位取反)++(自增)--(自减) 举例:int a=1;a++;(第二句"a++"则只对a一个变量进行了操 ...

最新文章

  1. 比特率 波特率 数据传输速率 区别(转)
  2. Android开发--实现对话框(AlertDialog)
  3. SegmentFault 创始人祁宁对话 C# 之父 Anders Hejlsberg
  4. 学习数据库的三大范式
  5. windows搭建SVN服务MD版
  6. BaseAdapter的ArrayIndexOutOfBoundsException
  7. 可靠信道传输2.0 2.1 3.0
  8. 吴伯凡-认知方法论-消极数据的力量
  9. rank函数怎么用oracle,Oracle学习教程:rank函数的使用
  10. 【基于时间序列的变形观测的数据处理方法的研究】
  11. Java对Word文档进行操作
  12. 前端页面局部(全局)刷新方法
  13. Java解析网页中的超链接批量下载用
  14. JavaDoc文档生成
  15. java程序员拜年代码_作为一个资深的程序员我们应该这么拜年
  16. visual basic_Visual Basic的随机数生成的检验
  17. 个人面经整理海尔测试
  18. Java毕设项目:智慧校园管理系统
  19. 2017年6月历史文章汇总
  20. android studio 使用CMAKE,在terminal终端里敲cmake命令

热门文章

  1. linux学习之路——ubuntu 16.04 开机开启数字小键盘解决方法
  2. 软件测试测试人员遇到的问题及解决方法(面试)
  3. jmeter发送json数据,报405、400错误解决方案
  4. IDEA maven项目查自动查看依赖关系,解决包冲突问题
  5. Angular (SPA) WebPack模块化打包、按需加载解决方案完整实现
  6. 完美解决MySQL重装问题
  7. Python 解决 :NameError: name ‘reload‘ is not defined 问题
  8. PHP输出中文乱码的解决方法
  9. 解决安卓微信浏览器中location.reload 或者 location.href失效的问题
  10. Fiddler无法抓取HTTPS的问题,Fiddler证书无法安装终极解决方案,