WebRTC 源码分析——RTC_CHECK

WebRTC 源码分析——RTC_CHECK【网络通信 WebRTC】WebRTC 源码分析 RTC_CHECK【1】RTC_DCHECK(1 != 1) << “hello world ” << 100 << 3.

大家好,欢迎来到IT知识分享网。

【网络通信 — WebRTC】WebRTC 源码分析 — RTC_CHECK

【1】RTC_DCHECK(1 != 1) << “hello world ” << 100 << 3.14;的执行过程

RTC_DCHECK(1 != 1) << "hello world " << 100 << 3.14;的执行过程 宏展开结果 while (!(1 != 1)) FatalLogCall<false>("main.cc", 7, "1 != 1") & LogStreamer<>() << "hello world " << 100 << 3.14; 注,根据运算符的优先级,<< 运算符比 & 运算符优先级高,所以先算 << 运算符

<< 运算符的运算过程

  • 1. 先计算 LogStreamer<>() << “hello world “,LogStreamer<>() 生成临时对象,临时对象会调用 operator<<() 函数,operator<<() 函数会把 “hello world” 和临时对象作为参数,生成 LogStreamer<T, Ts…> 对象,该对象存储着 “hello world” 和临时对象
  • 2. 上一步生成的 LogStreamer<T, Ts…> 对象会继续调用 operator<<() 函数,同时把自己和 100 传入,生成一个新的 LogStreamer<T, Ts…> 对象,从而递归下去,直到所有的 << 运算符处理完毕
WebRTC 源码分析——RTC_CHECK

添加图片注释,不超过 140 字(可选)

& 运算符的运算过程

  • 1. 上一步最后会返回 LogStreamer<T, Ts…> 对象,组成了新的表达式,FatalLogCall<false>(“main.cc”, 7, “1 != 1”) & LogStreamer<T, Ts…>
  • FatalLogCall<false>(“main.cc”, 7, “1 != 1”) 会生成临时对象,临时对象会继续调用 operator&() 函数
  • 2. 在 operator&() 函数中会使用 LogStreamer<T, Ts…> 对象调用 Call() 函数,会产生递归调用,每次调用都会把本类保存的日志数据往下层传递
  • 3. 递归到最后,LogStreamer<>() 生成临时对象会调用 FatalLog() 函数,将所有日志数据打印出来
WebRTC 源码分析——RTC_CHECK

添加图片注释,不超过 140 字(可选)

整理了一些webRTC的视频和文档资料需要的伙伴私信【1】进群领取,包含一些必备的webRTC技术点

WebRTC 源码分析——RTC_CHECK

另外分享个宝藏免费视频网址点进免费报名就可以直接学习的视频网址!我的宝藏链接​:【免费】FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发-学习视频教程-腾讯课堂

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/88928.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信