相关疑难解决方法(0)

如何修复代码以避免警告 -Wunsafe-buffer-usage

在 clang 16.0 之前,我能够使用 -Weveything 毫无问题地编译所有项目,\n修复我的代码并注意此选项给出的(有用的)警告。\n但是,似乎添加了 -Wunsafe-buffer-usage在版本 16 中(我的系统最近更新到了它)\n如果没有得到关于正在使用的任何指针的大量无用警告,则不可能编译任何项目,请参阅下面的最小示例:

\n
$ cat main.c\n#include <stdio.h>\n\nint main(int argc, char **argv) {\n    if (argc != 2) {\n        return 0;\n    }\n    printf("argv[1] = %s\\n", argv[1]);\n}\n\n$ clang -Weverything main.c\nmain.c:3:27: warning: 'argv' is an unsafe pointer used for buffer access [-Wunsafe-buffer-usage]\nint main(int argc, char **argv) {\n                   ~~~~~~~^~~~\nmain.c:7:30: note: used in buffer access here\n    printf("argv[1] = %s\\n", argv[1]);\n                             ^~~~\n1 warning generated.\n
Run Code Online (Sandbox Code Playgroud)\n

人们不可能使用此警告来推理他的代码。

\n

clang 文档有以下内容:

\n
\n

由于 -Weverything 启用每个诊断,因此我们通常不建议使用它。-Wall -Wextra 对于大多数项目来说是更好的选择。使用 -Weverything 意味着更新编译器更加困难,因为您\xe2\x80\x99 暴露于实验诊断,其质量可能低于默认诊断。如果您确实使用 -Weverything,那么我们建议您在添加到 …

c clang compiler-warnings

14
推荐指数
2
解决办法
2497
查看次数

标签 统计

c ×1

clang ×1

compiler-warnings ×1