gpt4 book ai didi

gcc - 如何获得错误字符串格式的警告(C++)

转载 作者:行者123 更新时间:2023-12-03 20:51:58 25 4
gpt4 key购买 nike

如果我使用糟糕的术语,请提前道歉。

当我在 gdb 下编译 C++ 应用程序并使用 printf() 时,它给了我关于格式字符串的一致性和传入的参数的令人敬畏的警告。

例如,这段代码:

printf("%s %s", "foo");

导致编译器警告“格式参数太少”,这非常有用。
它还会给出有关格式字符串类型与参数类型的警告。
它必须检查格式字符串并将其与提供的参数类型进行比较。
- 这种编译时内省(introspection)是可以添加到普通源代码中的东西,还是需要编译到 gcc 本身的东西?

fwiw 这是在 os x 上的 gcc 4.2.1 下。

最佳答案

您可以为自己的类似 printf 的函数(以及类似 scanf/strftime/strfmon 的函数)做这样的事情:

#define PRINTF_FORMAT_CHECK(format_index, args_index) __attribute__ ((__format__(printf, format_index, args_index)))

void my_printf(const char *fmt, ...) PRINTF_FORMAT_CHECK(1, 2);

gcc manual了解更多详情。

关于gcc - 如何获得错误字符串格式的警告(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2223968/

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