gpt4 book ai didi

android - 嵌套 ALOGD 语句

转载 作者:行者123 更新时间:2023-11-30 16:35:48 24 4
gpt4 key购买 nike

我遇到的情况是:

#define DBG_ALOGD(a)   ALOGD("%s:%d: ", __FUNCTION__, __LINE__); ALOGD a
#define DBG_MSG(a) do { if (debuggable) {DBG_ALOGD(a);} } while (0)

DBG_MSG(a) 由应用程序用来打印日志。

DBG_MSG("嗨%d", 2);将打印为

LOG_TAG: function_name:121
LOG_TAG: Hi 2

我想将 FUNCTION:LINE 与“Hi 2”组合成一行。

我试过了

#define DBG_ALOGD(a)   ALOGD("%s:%d:%s", __FUNCTION__, __LINE__, a)
#define DBG_MSG(a) do { if (debuggable) {DBG_ALOGD(a);} } while (0)

它不起作用,因为 a 不是一个普通字符串,它还有 %d请建议我如何更改 #define 以获得这些的组合。

最佳答案

我认为你可以使用宏变量参数(variadics):

#include <stdio.h>

#define DBG_ALOGD(fmt, ...) ALOGD("%s:%d: " fmt, __FUNCTION__, __LINE__, __VA_ARGS__ );
#define DBG_MSG(fmt, ...) do { if (debuggable ) {DBG_ALOGD(fmt, __VA_ARGS__ );} } while (0)

int main(void)
{
int debuggable = 1;
DBG_MSG("%s(%d)\n", "test", 0);
DBG_MSG("%s", "hello");

return 0;
}

我用printf函数而不是ALOGD测试了它,但我认为结果是一样的。

警告,您将无法直接调用DBG_MSG("simple string"),因为编译器将等待...中不为空的内容

>

关于android - 嵌套 ALOGD 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48740108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com