首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >嵌入式C中的自定义printf?

嵌入式C中的自定义printf?
EN

Stack Overflow用户
提问于 2018-09-03 00:51:14
回答 1查看 0关注 0票数 0

我需要一个自定义的printf,我可以控制目标端口(而不是总是STDIO)。

我遇到了函数定义问题。

printf 被定义为 printf(FAR const char *fmt, ...)

debugPrintf(FAR const char *fmt, ...)不会编译。什么是...实际?

EN

回答 1

Stack Overflow用户

发布于 2018-09-03 10:18:32

FAR是一种指针属性,用于较旧的分段体系结构,如MS / DOS和Windows 2.x操作系统。它不太可能适合您的目标。

...是一个名为省略号的C令牌。它用于指定该函数printf采用未指定数量的额外参数和未指定的类型。这些参数的数量和类型必须由来自其他来源的函数确定printf,例如格式字符串参数的语法。

您可以创建自己的类似printf的函数,从格式字符串和相应的参数构造C字符串,并将该字符串用于特定目的。

这是一个例子:

代码语言:javascript
复制
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int write_format(int hd, const char *format, ...) {
    char *msg;
    va_list arg;
    int ret;

    /* compute the length of the formatted message */
    va_start(arg, format);
    ret = vsnprintf(NULL, 0, format, arg);
    va_end(arg);

    /* allocated an array for the formatted message */
    if (ret < 0 || (msg = malloc(ret + 1)) == NULL)
        return -1;

    /* construct the formatted message */
    va_start(arg, ap);
    ret = vsnprintf(msg, ret + 1, format, arg);
    va_end(arg);

    /* send the message using the write system call */
    ret = write(hd, msg, ret);

    free(msg);
    return ret;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档