
教大家如何屏蔽printf,cout,qDebug等打印信息。
1. MSVC编译器
- 将两个“/”连接成“//”实现注释是MSVC编译器扩展功能。
#define cout /##/
#define printf /##/
#define qDebug /##/
- 启用宏替换后变为注释语句
printf("Hello world!");
相当于: //("Hello world!")
cout << "Hello world!";
相当于: // <<("Hello world!")
qDebug() << "Hello world!";
相当于: // <<("Hello world!")
2. 直接关闭流
2.1 POSIX标准的编译器
#include <unistd.h>
close(STDOUT_FILENO);
2.2 调用stdio标准库
- 注意:调用fclose()之后对流的任何使用导致了未定义的行为,不建议使用。
#include <stdio.h>
fclose(stdout);
2.3 使用注意
- 关闭输出流后下列类似的打印将不会输出
- 注意:关闭输出流后没有方法重新为它打开。
printf("Hello world!");
cout << "Hello world!";
qDebug() << "Hello world!";
3. Qt库实现
- 在Qt项目文件添加以下定义:
- 屏蔽
qInfo()
DEFINES += QT_NO_INFO_OUTPUT
- 屏蔽
qDebug()
DEFINES += QT_NO_DEBUG_OUTPUT
- 屏蔽
qWarning()
DEFINES += QT_NO_WARNING_OUTPUT
关于更多
- 公众号后台回复"技巧"获取相关文章。