我需要一个自定义的printf,我可以控制目标端口(而不是总是STDIO)。
我遇到了函数定义问题。
printf
被定义为 printf(FAR const char *fmt, ...)
debugPrintf(FAR const char *fmt, ...)
不会编译。什么是...
实际?
发布于 2018-09-03 10:18:32
FAR
是一种指针属性,用于较旧的分段体系结构,如MS / DOS和Windows 2.x操作系统。它不太可能适合您的目标。
...
是一个名为省略号的C令牌。它用于指定该函数printf
采用未指定数量的额外参数和未指定的类型。这些参数的数量和类型必须由来自其他来源的函数确定printf
,例如格式字符串参数的语法。
您可以创建自己的类似printf的函数,从格式字符串和相应的参数构造C字符串,并将该字符串用于特定目的。
这是一个例子:
#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;
}
https://stackoverflow.com/questions/-100002533
复制相似问题