Android 在宏中连接格式化字符串
我正在android平台上做一些算法开发。我想修改我以前的开发人员的代码并添加关键字,因为他已经在代码中添加了很多有用的日志信息。但是我想通过Android 在宏中连接格式化字符串,android,c,macros,Android,C,Macros,我正在android平台上做一些算法开发。我想修改我以前的开发人员的代码并添加关键字,因为他已经在代码中添加了很多有用的日志信息。但是我想通过logcatgrep一个新的关键字来查看我想要的所有有用的日志 1.想法是使用:adb logcat|grep“关键字”查看日志文件。例如,关键字可以是一个人的名字James 2.以前的开发人员将头文件中的ALOGE改为如下。他在.c文件中添加了许多LOG_ACD #define LOG_ACD(fmt, args...) if (acd->stat
logcat
grep一个新的关键字来查看我想要的所有有用的日志
1.想法是使用:adb logcat
|grep“关键字”查看日志文件。例如,关键字可以是一个人的名字James
2.以前的开发人员将头文件中的ALOGE改为如下。他在.c文件中添加了许多LOG_ACD
#define LOG_ACD(fmt, args...) if (acd->stats_debug_mask & STATS_DEBUG_MASK_ACD_LOG) ALOGE(fmt, ##args)
c中的示例是LOG_AcD(“%s:AcD_enable%d,monitor%d,freq%d,afd_state%d,AcD_atb%d”,
func,输出->acd\U启用,输出->acd\U监视器,
输出->频率,输出->acd_状态,输出->acd_atb)
3.如何将关键字添加到上述代码行中,以强制.c文件中的每一行LOG_ACD都有我的新关键字?有趣的是,ALOGE本身不是字符串,格式字符串将在.c文件中生成
#define LOG_ACD(fmt, args...) if (acd->stats_debug_mask & STATS_DEBUG_MASK_ACD_LOG) ALOGE(fmt, ##args)
我希望我能清楚地描述这个问题。谢谢大家你们说格式字符串将在C文件中生成。我想你说的不是真心话 对于
printf
类函数,通常指定文字格式字符串。(格式字符串是包含所有格式说明符的字符串,如%d
。文字字符串是双引号之间以零结尾的字符串常量。)如果是这种情况(并且您的示例支持此假设),则可以使用字符串文字连接:
#define LOG_ACD(fmt, args...) ALOGE("ACD: " fmt, ##args)
两个相邻的字符串文本被编译为一个,例如,
“A”“B”
基本上与“AB”
相同。当格式字符串不是文本时,宏将生成编译时错误,但如上所述,这是不寻常的。谢谢。我的意思是我在网上搜索一些解决方案。但它们是两个“普通”字符串的组合。我试过你的方法,它会通过mm,但我不能grep关键字。如果我做得不对,我会再试一次。感谢mangrep将不会获得添加的关键字该宏编写的所有日志条目-为了清晰起见,我省略了条件-应在输出前加上“ACD:”,例如log\u ACD(“x==%d”,x)
应打印类似“ACD:x==9”的内容,这将使您能够对“ACD”进行grep。您的解决方案是“ACD:”将添加到fmt并成为fmt的一部分。我只是把文件推到手机上两次。grep找不到关键字。您是否在编辑器中查看了日志文件,但没有进行grepping?你看到了什么?