Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在宏中连接格式化字符串_Android_C_Macros - Fatal编程技术网

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

我正在android平台上做一些算法开发。我想修改我以前的开发人员的代码并添加关键字,因为他已经在代码中添加了很多有用的日志信息。但是我想通过
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?你看到了什么?