在工程中我们常需要打印,但打印也可分多种类型,某些类型可以打印给用户看;而某些类型又不适合打印给用户看。由此可设定一个打印强度阈值,低于这个强度阈值不打印,高于这个强度阈值可打印。

1、实现代码

c文件中

static int cli_log_level;#if !HAVE_WINRT
int x264_vfprintf( FILE *stream, const char *format, va_list arg )
{HANDLE console = NULL;DWORD mode;if( stream == stdout )console = GetStdHandle( STD_OUTPUT_HANDLE );else if( stream == stderr )console = GetStdHandle( STD_ERROR_HANDLE );/* Only attempt to convert to UTF-16 when writing to a non-redirected console screen buffer. */if( GetConsoleMode( console, &mode ) ){char buf[4096];wchar_t buf_utf16[4096];va_list arg2;va_copy( arg2, arg );int length = vsnprintf( buf, sizeof(buf), format, arg2 );va_end( arg2 );if( length > 0 && length < sizeof(buf) ){/* WriteConsoleW is the most reliable way to output Unicode to a console. */int length_utf16 = MultiByteToWideChar( CP_UTF8, 0, buf, length, buf_utf16, sizeof(buf_utf16)/sizeof(wchar_t) );DWORD written;WriteConsoleW( console, buf_utf16, length_utf16, &written, NULL );return length;}}return vfprintf( stream, format, arg );
}
#endifvoid x264_cli_printf( int i_level, const char *fmt, ... )
{if( i_level > cli_log_level )//cli_log_levelreturn;va_list arg;va_start( arg, fmt );x264_vfprintf( stderr, fmt, arg );va_end( arg );
}

h头文件中

#if defined(_WIN32) && !HAVE_WINRT
int x264_vfprintf( FILE *stream, const char *format, va_list arg );
int x264_is_pipe( const char *path );
#else
#define x264_vfprintf vfprintf
#define x264_is_pipe(x) 0
#endif

【X264系列】之不同强度的printf相关推荐

  1. STM8S系列基于IAR标准外设printf输出demo

    STM8S系列基于IAR标准外设printf输出demo

  2. 【X264系列】之编码YUV的内存流程

    1.读取一帧YUV图像的代码位置: if(filter.get_frame( opt->hin, &cli_Pic, i_frame + opt->i_seek)) in x264 ...

  3. 【符号修改-X264系列】之根据静态库强符号修改代码工具

    目录描述 序 方法 1.config.txt 2.shell脚本 附录A A1.linux find中的-print0和xargs中-0的奥妙 A2.通过shell执行perl语句 A3.shell中 ...

  4. 【X264系列】之命令参数解析

    strtol strcasecmp strtok 待续.....

  5. 秒杀多线程第三篇 原子操作 Interlocked系列函数

    上一篇<多线程第一次亲密接触 CreateThread与_beginthreadex本质区别>中讲到一个多线程报数功能.为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是 ...

  6. 腾讯发布的开发语言安全指南:C/C++安全指南

    目录 1 通用安全指南 I. C/C++使用错误 1.1 不得直接使用无长度限制的字符拷贝函数 1.2 创建进程类的函数的安全规范 1.3 尽量减少使用 _alloca 和可变长度数组 1.4 pri ...

  7. C/C++ 之 C发展史及 各标准特性说明

    Tips:  1. 本人当初学习C/C++的记录.  2. 资源很多都是来自网上的,如有版权请及时告知!  3. 可能会有些错误.如果看到,希望能指出,以此共勉! C 发展史   1951年,IBM的 ...

  8. java佳沃维洛奇,新品速递:JAVA 双雄耀世登场

    第一代鱼雷的热销连 JAVA 本身都始料未及,超强的配置,极致的性价比:三千元内几乎没有敌手,并且使得诸多自行车厂商模仿跟进. 现在,第二代鱼雷.VELOCE(维洛奇)已全面登场. 高精密铝合金 70 ...

  9. c语言格式化输入字符型,C语言——字符串和格式化输入/输出

    今天,学习了C Primer Plus的第四章.本章讲解了一些简单的C预处理器的知识,一些字符.字符串以及数组等相关概念以及输入输出函数的使用. 现将知识点总结如下: 字符串:一个或多个字符的序列(双 ...

最新文章

  1. WKWebView的使用
  2. fastjson总结
  3. php代码怎么复制_PHP_PHP网站备份程序代码分享,效果图:PHP代码 复制代码 代码 - phpStudy...
  4. Qt平台和编译器说明-Android
  5. 大剑无锋之你所知道的列式数据库有哪些?列式数据库的好处在哪?【面试推荐】
  6. 我的WCF之旅(1):创建一个简单的WCF程序
  7. kafka源码编译及开发环境搭建
  8. Linux系统中源码包tomcat的管理
  9. java计算机毕业设计租车管理系统源码+mysql数据库+系统+部署+lw文档
  10. macOS Big Sur安装Mojave动态桌面壁纸
  11. html注释js,JavaScript 注释
  12. 2021-11-04
  13. 电脑IP地址查看及修改
  14. 手把手学会gitbub(4)
  15. 2020浙江工业大学程序设计迎新赛——决赛(重现赛)G-抽卡
  16. siteapp–让独立博客变成手机app
  17. ASPCMS插件,批量ASPCMS采集发布插件
  18. Markdown基操
  19. [NLP]预处理--使用re正则化进行文本清理
  20. iOS 【模仿App 获取app素材】

热门文章

  1. java课设电子门禁_中控门禁pullSdk Java demo 中控智慧门禁系统 - 下载 - 搜珍网
  2. 学习iot_腾讯 AI Lab智慧农业组招收多名算法工程实习生 -- IOT/机器学习方向
  3. GitLab的CICD配置文件.gitlab-ci.yml
  4. Nacos 配置集导出和导入
  5. Spring Cloud Stream与RabbitMQ整合时Producer与Consumer的相关配置
  6. php微信公众号测试号token配置失败,微信公众号Token配置失败解决办法
  7. jstack会导致JVM停顿
  8. kafka入门综合概要介绍
  9. CentOS 7 安装 JAVA环境(JDK 1.8)
  10. RedHat6.4安装IBM MQ7.5