gpt4 book ai didi

c - 如何确保 vfprintf 具有正确数量的参数?

转载 作者:太空狗 更新时间:2023-10-29 16:03:47 27 4
gpt4 key购买 nike

我在 C 中有一个可变参数函数,大致如下所示:

void log(const char * format, ...) {

va_list args;
va_start(args, format);
vfprintf( stderr, format, args );
va_end(args);
exit(1);
}

我可以通过这样调用来使我的应用程序崩溃,

log("%s %d", 1);

因为函数缺少参数。有没有办法确定运行时缺少参数?

最佳答案

不,没有。但是当你用 gcc 编译你的代码时,你应该添加选项 -Wall -Wextra -Wformat -Os。这将启用很多警告,并且当您使用 __attribute__(__printf__, 2, 3) 或类似的东西(我不记得确切的语法)注释您的函数时,应该针对您的情况发出警告出现。

参见 http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html确切的语法。它真的是 __atttribute__((__format__(__printf__, 1, 2)))

关于c - 如何确保 vfprintf 具有正确数量的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7367860/

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