c - 警告 : array subscript is above array bounds [-Warray-bounds] in module

标签 c arrays for-loop printk

<分区>

static int myarray[2]={-1,234};
module_param_array(myarray,int,&arrayargc,0);
MODULE_PARM_DESC(myarray,"Integer Array");

static int __init module_init_2(void)
{
 int i;
  for(i=0;i< (sizeof myarray/sizeof(int));i++);
{

printk(KERN_INFO "myarray[%d] is %d",i,myarray[i]);

}

我正在编写一个简单的模块来接受一些命令行输入。在编译期间它会发出警告

warning: array subscript is above array bounds [-Warray-bounds]
printk(KERN_INFO "myarray[%d] is %d",i,myarray[i]);

为什么它会发出警告,因为循环似乎一直运行到 i=2,我看到了一些与此相关的问题,但这对我帮助不大

最佳答案

您的一开始 printf 为三个字符串指定了三个 %s,但您只为那个 printf 提供了一个字符串,因此崩溃.

来自 Weather Vane 评论的注释:

请记住,C 编译器将连接仅由空格分隔的字符串文字。

这意味着即使您在三行中写了三个单独的“Option #1”、“Option #2”等,它们仍然只算作一个字符串(在连接之后。通过添加来解决这个问题每行末尾的逗号以防止连接(因此您将拥有三个单独的字符串)。

关于c - 警告 : array subscript is above array bounds [-Warray-bounds] in module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40328373/

相关文章:

javascript - 返回数组中元素的索引范围

arrays - Crystal 报表 : How to evaluate multiple IF statements in one formula?

javascript - Google map 主题是否有更好的代码结构?

c - 如何在 C 中播放 flash 动画?

c - 为什么索引从 'C' 中的零开始?

c - 程序计算一个字符在文件中出现的次数(不区分大小写)

javascript - 如何基于数组播放和停止动画?

javascript - 为什么 AJAX 不能与 for 循环一起使用

c - 如何访问动态 vector 的元素?

c - 使用 `getchar()` 终止 while 循环