【发布时间】:2018-12-28 14:11:23
【问题描述】:
我试图理解“static”关键字在 C 中的函数声明中作为数组索引的使用。
阅读this article后,我尝试声明这样一个函数,并故意将一个太短的数组传递给它:
#include <stdio.h>
#include <stdlib.h>
void print_string10(char string10[static 10]) {
// Should trigger a warning if the argument is NULL or an array of less than 10 elements
printf("%s\n",string10);
}
int main(void) {
char short_string[] = "test";
print_string10(short_string); // should trigger a warning as the string is 5 long
return EXIT_SUCCESS;
}
如文章中使用clang 编译会触发警告,但gcc -Wall -Werror 不会,它编译并运行良好。
我找不到解释,GCC 忽略此警告是正常行为吗?
【问题讨论】:
-
你有 GCC 的哪个版本?您在构建时是否传递了任何其他选项或标志?
-
似乎不需要任何消息。编译器可以忽略那里的关键字。
-
我使用的是 gcc 6.3.0,只有
-Wall -Werror。
标签: c gcc clang gcc-warning