c - 警告:ISO C90 禁止混合声明和代码 [-Wdeclaration-after-statement]
问题描述
我首先在编译时警告有两个问题:警告:ISO C90 禁止混合声明和代码 [-Wdeclaration-after-statement] MenuFunction fp;
其次,我总是以“错误:缓冲区溢出。请再试一次,输入更少的数据”结束我做错了什么我不知道,请帮我解决这个问题。
typedef void (*MenuFunction)(System*);
int main(int argc, char ** argv)
{
...
/* While loop for my menu */
while(1)
{
printf("Main Menu\n");
printf("%s\n", menu[0].text);
printf("%s\n", menu[1].text);
printf("%s\n", menu[2].text);
printf("Select your option (1-3): ");
MenuFunction fp;
fp = getMenuChoice(menu);
if(fp == NULL){
fprintf(stderr, "invalid choice\n");
}
else{
(*fp)(&system);
}
}
}
/* Function that points to the menu function */
MenuFunction getMenuChoice(MenuItem * menu)
{
MenuFunction function = NULL;
char select[50];
fgets(select, 50, stdin);
if(select[strlen(select)-1] == '\n')
{
switch(select[0])
{
case '1':
function = menu[0].function;
break;
case '2':
function = menu[1].function;
break;
case '3':
function = menu[2].function;
exit(0);
break;
default:
printf("Invalid option\n");
}
}
else
{
readRestOfLine();
printf("Error: buffer overflow. Please try again, entering less data");
}
return function;
}
解决方案
推荐阅读
- javascript - 与最新 Jquery 的兼容性
- javascript - 使用多部分文件和 json 数据响应 ajax 请求
- amazon-web-services - 将测试数据点传递给 sci-kit learn 时出错
在 AWS-Sagemaker 中创建的 .predict() 函数 - webpack - 我收到 webpack 警告严重依赖:依赖的请求是使用 koa 时的表达式
- iframe - Puppeteer:当我有 Iframe 的 ElementHandler 时,如何在 iframe 上下文中评估代码
- mongodb - 无法通过 Mongodb shell 连接到 Mongodb 集群
- android - 安装没有成功。无法安装应用程序。安装失败,原因是:“-26”重试
- php - Slim 框架 404 错误页面显示未找到错误
- python - Anaconda 提示打开时出错
- python - 为什么我无法在 python 中使用 youtube-dl 下载 mp4 文件