gpt4 book ai didi

c++ - 为什么 _Printf_format_string_ 宏不产生任何警告?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:40 24 4
gpt4 key购买 nike

在下面的片段中,根据 SAL 规范,在 MyFormat() 调用中错误使用格式说明符应该会产生警告,如果我取消对 printf() 的相同调用的注释,我真的会收到所有这些警告,但是即使使用/W4,我的代码也是静默编译的。我究竟做错了什么?我使用的是 MSVC 2017 15.9.7 社区版。

#include <stdio.h>
#include <stdarg.h>

void MyFormat(_Printf_format_string_ const char *fmt, ...)
{
va_list va;
va_start(va, fmt);
vprintf(fmt, va);
va_end(va);
}

int main()
{
MyFormat("blabla %s\n", L"qq");
// printf("blabla %s\n", L"qq");
return 0;
}

最佳答案

添加 /analyze 标志将导致 produce a warning .然而,它与您从 printf 中得到的警告不同(在我看来较差)。不幸的是,我找不到一种方法来制作用户定义的函数来产生那种警告风格。

关于c++ - 为什么 _Printf_format_string_ 宏不产生任何警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54826028/

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