编辑:我现在有
我有这段代码(摘录):
#include <stdarg.h>
了,它可以编译-但是varargs没有被传递。有任何想法吗?
我有这段代码(摘录):
void msg(char* message, ...) {
va_list args;
va_start(args, message);
char* m;
if(asprintf(&m, message, args)==-1) m = message;
va_end(args);
print("<fg:green>INFO:</fg> ");
println(m);
}
(print
和printf
是包装器,用于执行颜色标签)
这个想法是将可变参数传递给asprintf。
然而,它无法编译:
gcc -g -Wall -std=gnu99 -O2 -Wfatal-errors -c -o src/ui.o src/ui.c
src/ui.c: In function ‘msg’:
src/ui.c:7:5: warning: implicit declaration of function ‘va_start’ [-Wimplicit-function-declaration]
src/ui.c:12:5: warning: implicit declaration of function ‘va_end’ [-Wimplicit-function-declaration]
我是否需要包含特定内容才能使用va_start()
和va_end()
?
GCC(Ubuntu/Linaro 4.6.3-1ubuntu5)4.6.3 Xubuntu 12.04
(这是编译器的版本信息,适用于Xubuntu 12.04操作系统。)
asprintf
是如何定义的。 - undefined