在我的代码中,我使用以下行打印一个char readbuffer[1];
数组(大小为 1 的 char 数组):
printf(readbuffer);
7.3.1+20180406-1
这在我的电脑(Arch Linux,gcc 版本)上编译和工作没有问题。但是,当我将包含此代码的作业提交给我的导师时,他实际上在编译我的代码时收到了编译器警告:
shell.c:89:20: warning: format not a string literal and no format arguments [-Wformat-security]
printf(readbuffer);
他正在使用 16.04 LTS 版本中的 gcc/clang 版本。我们都使用了相同的编译器标志。
为什么是这样?这在新gcc
版本中突然不再是问题了吗?如果是这样,为什么不呢?
请注意:我不想知道如何解决此问题,而只想知道为什么警告与 gcc 版本不一致。