目录
问题场景:
在用keil编译代码的时候,会出现error: #411: a parameter is not allowed的错误提示,但是仔细检查具体代码后也没有找出问题所在。
问题描述
例如:作者在做OLED显示实验的时候 ,在编译GIF图显示代码的时候会出现如下报错:
作者回到源代码具体位置进行查看 :
void OLED_DrawGIF(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1, unsigned char k, int m, unsigned char GIF[][m])
原因分析:
可以发现函数最后有一个不定长参数设置,
unsigned char GIF[][m]。
对于数组GIF[][m]
中存在的未知m是不定量的,而对于这种不定量的数组表示方法在以前的C语言标准中是不被允许的。但在“C99” C语言标准里是存在的有关的定义的。那么既然存在这个定义,为什么还会出现报错的原因呢?
大概率是因为有小伙伴 没有对 keil进行C99模式的相关设置 。
解决方案:
只需要在keil菜单栏点击魔术棒,在C/C++中勾选C99 mode就完美解决问题啦!
接着在此对代码进行编译;
没有错误,问题解决!