gpt4 book ai didi

c - 函数 ‘va_start’ 的隐式声明

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:07 26 4
gpt4 key购买 nike

编辑:我现在有 #include <stdarg.h>它编译 - 但可变参数没有通过。有什么想法吗?


我有这段代码(摘录):

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);
}

(printprintf 是做颜色标签的包装器)

想法是将可变参数传递给 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.3Xubuntu 12.04

最佳答案

您必须包括 #include <stdarg.h>并使用 vasprintf而不是 asprintf .

关于c - 函数 ‘va_start’ 的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22579457/

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