社区
C++ 语言
帖子详情
如何在代码中设置一个开关,使得不执行某些代码行,比如说用来进行LOG输出的代码行?
jzp12
2008-04-03 03:42:08
#if 0
#endif
这种就算了,因为代码中LOG输出的代码行太多。
...全文
361
18
打赏
收藏
如何在代码中设置一个开关,使得不执行某些代码行,比如说用来进行LOG输出的代码行?
#if 0 #endif 这种就算了,因为代码中LOG输出的代码行太多。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hoohag
2008-04-03
打赏
举报
回复
直接#define ERRORLOG就可以打开开关了, 不要写就是关掉开关. 至于#define FORRELEASRLOG(LINE) 0 不会有任何问题, 只是你所有LOG的地方全变成0; 这个代码会被编译器忽略掉, 不会编到目标文件里.
hoohag
2008-04-03
打赏
举报
回复
[Quote=引用 16 楼 jzp12 的回复:]
嗯,谢谢诸位,特别是hoohag ,在你的定义前面加个
#define ERRORLOG 0;
就能打开开关吧,但是如果没有打开开关的话,所在的LOG输出语句的值就是0,这会不会有什么风险,对后面的代码会有影响吗?
[/Quote]
#define ERRORLOG 0;不会有任何风险,放心用好了.
jzp12
2008-04-03
打赏
举报
回复
嗯,谢谢诸位,特别是hoohag ,在你的定义前面加个
#define ERRORLOG 0;
就能打开开关吧,但是如果没有打开开关的话,所在的LOG输出语句的值就是0,这会不会有什么风险,对后面的代码会有影响吗?
zsyddl2
2008-04-03
打赏
举报
回复
和上面 有 几楼的 做法一样
zsyddl2
2008-04-03
打赏
举报
回复
#ifdef _DEBUG
#define TRACE printf
#else
#define TRACE
#endif
这样 当不定义_DEGBUG的时候 就 没有任何多余代码
使用
TRACE("....");和printf一样使用
风云剑客
2008-04-03
打赏
举报
回复
可以定义一个变量开关,然后定义printf()的操作宏,这样可以实现楼主的功能,最好自己定义一个公共的头文件来实现。
#include <stdio.h>
const bool OUT_LOG = 0 ;
#define printf(a) if (OUT_LOG) printf(a) else //不进行操作或换成另外的操作
int main()
{
printf("text");
return 0;
}
hoohag
2008-04-03
打赏
举报
回复
在工程属性里面加上 /D "_ERRORLOG"就是打开, 不加就是关闭
至于开销问题, 虽说不大, 但假如一个程序里面有1万次调用, 调用函数LOG(), 带来的性能损失还是有的, 站在工程的角度来看, 能不编译进去的代码, 尽量不要编到目标文件中. 同时在外面人看来, 既看不到LOG()源代码的人, 你的函数里面加了宏, 可使用的人并不知道里面的宏是怎样, 这样容易理解上的偏差, 我们尽量应该让自己的代码友好一点, 用FORERRORLOG(LOG()); 可以清楚的告诉任何人, LOG()函数是否起作用是和某个宏相关的,这样如果需要关注得的人会去注意这个宏, 这个应该比把宏加在函数内部要友好很多.
jzp12
2008-04-03
打赏
举报
回复
那个开销太大,
TO:hoohag
能否再明示一下?
taodm
2008-04-03
打赏
举报
回复
既然楼主自己的方法已经可以用了,还有啥好问的呢。
jzp12
2008-04-03
打赏
举报
回复
那如何打开_ERRORLOG这个LOG的开关?如何关闭这个开关?
hoohag
2008-04-03
打赏
举报
回复
[Quote=引用 7 楼 jzp12 的回复:]
就是只要一个开关使得执行或者不执行代码行中
printf("");
这样的输出语句。
[/Quote]
但是这样还是有一次函数调用的开销呀....
jzp12
2008-04-03
打赏
举报
回复
就是只要一个开关使得执行或者不执行代码行中
printf("");
这样的输出语句。
hoohag
2008-04-03
打赏
举报
回复
我的做法是先有下面的宏定义
#ifdef _ERRORLOG
#define FORERRORLOG(LINE) LINE
#else
#define FORERRORLOG(LINE) 0
#endif
然后把使用LOG()的地方全部改成
FORERRORLOG(LOG());
然后_ERRORLOG可以作为LOG的开关
laolaoliu2002
2008-04-03
打赏
举报
回复
#define OUTPUT_LOG
Supper_Jerry
2008-04-03
打赏
举报
回复
整体用宏。
rageliu
2008-04-03
打赏
举报
回复
楼上这样,只需要NEED_LOG一个就控制全了
HelloDan
2008-04-03
打赏
举报
回复
判断句
qmm161
2008-04-03
打赏
举报
回复
汗一个
#ifdef NEED_LOG
#define LOG()\
{printf(...)...}
#else
#define LOG()
#endif
安卓破解之
log
信息
输出
开关
前言 首先是在鬼哥的群里听到好友淡然提起
log
打印信息的
开关
。淡然博客http://b
log
.csdn.net/zihao2012?viewmode=contents 在分析安卓程序的时候,经常使用DDMS的
log
cat信息
输出
,来查看程序的信息
输出
。首先
log
信息
输出
可以很方便的查看软件
执
行
的流程,或者软件在某个时刻
执
行
到某个关键地点,这也是程序员在开发这种常用的的方法,但是程序在发布的时候
android:分享
一个
很强大的
LOG
开关
---
Log
.is
Log
gable
1、API亮点: 此API可以实现不更换APK,在出问题的手机上就直接能抓到有效
log
,能提升不少工作效率。 2、API介绍 最近在解决短信问题时,看到
一个
很强大的
LOG
开关
---
Log
.is
Log
gable 1. if (
Log
.is
Log
gable(
Log
Tag.TRANSACTION,
Log
.VERBOSE)) { 2.
Log
.v(TAG, "Creating Tr
Android
中
Log
.d和
Log
.v如何实现在release版本不
输出
Android 开发文档
中
说明
Log
.d和
Log
.v只有在开发版本
中
输出
,在Release版本
中
无
输出
。那么这个功能是如何实现的呢?Android
中
Log
.d和
Log
.v在Java和Native Code有不同的实现,需要分别说明。1. native code
中
实现 我们知
Gradle build
设置
自动
log
开关
今天测试apk版本 然后需要关闭
log
代码
里面
设置
了一些 总有漏掉的
log
打印出来 寻求的方法如下 点击打开链接 Android Studio 对应的BuildConfig.java位置 在Studio
中
生成的目录: /app/build/generated/source/buildConfig/ 文件下的产品目录里面,找到想要的包名下会自动生成BuildConfig.J
android的
Log
输出
一个
android应用程序运
行
后 并不会在 ide的控制台内
输出
任何信息. 不能在控制台
输出
。但是android提供的
Log
类。
在程序
中
输出
日志, 使用 android.util.
Log
类.
该类提供了若干静态方法
Log
.v(String tag, String msg);
Log
.d(String tag, String msg);
Log
.i(String tag, String msg);
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章