error C2059: syntax error : 'type'是怎么回事啊?
#include<stdio.h>#include<stdlib.h>voidmain(){intmax(intx,inty,intz);inta,b,c,d;scanf...
#include<stdio.h>
#include<stdlib.h>
void main()
{
int max(int x,int y,int z);
int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
system("pause");
}
int max(int x,int y,int z)
{
int r;
if(x>y)r=x;
else r=y;
if(r>z);
else r=z;
return(r);
}
C:\C++\max abc\max abc.c(5) : warning C4002: too many actual parameters for macro 'max'
C:\C++\max abc\max abc.c(5) : error C2059: syntax error : 'type'
C:\C++\max abc\max abc.c(8) : warning C4002: too many actual parameters for macro 'max'
C:\C++\max abc\max abc.c(12) : warning C4002: too many actual parameters for macro 'max'
C:\C++\max abc\max abc.c(12) : error C2059: syntax error : 'type'
Error executing cl.exe.
max abc.exe - 2 error(s), 3 warning(s)
请问是哪里错啦? 展开
#include<stdlib.h>
void main()
{
int max(int x,int y,int z);
int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d",d);
system("pause");
}
int max(int x,int y,int z)
{
int r;
if(x>y)r=x;
else r=y;
if(r>z);
else r=z;
return(r);
}
C:\C++\max abc\max abc.c(5) : warning C4002: too many actual parameters for macro 'max'
C:\C++\max abc\max abc.c(5) : error C2059: syntax error : 'type'
C:\C++\max abc\max abc.c(8) : warning C4002: too many actual parameters for macro 'max'
C:\C++\max abc\max abc.c(12) : warning C4002: too many actual parameters for macro 'max'
C:\C++\max abc\max abc.c(12) : error C2059: syntax error : 'type'
Error executing cl.exe.
max abc.exe - 2 error(s), 3 warning(s)
请问是哪里错啦? 展开
4个回答
展开全部
我觉得他们没有说清楚,我有必要补充下:
你这个错误的根本原因,是 stdlib.h 文件里已经定义了max。
见该文件第 885行
/* Non-ANSI names for compatibility */
#ifndef __cplusplus
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
可见李蚂,max已经定义成带两个参数的宏了,你再去定义一个,程序会用该宏的定义去替哪春埋换,
但发现你的参数是3个,和宏定义的2个矛盾,就提示出错了。
建议把你的max函数改成别的名字森岩, 比如myMax之类的,免得和系统定义冲突。
你这个错误的根本原因,是 stdlib.h 文件里已经定义了max。
见该文件第 885行
/* Non-ANSI names for compatibility */
#ifndef __cplusplus
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
可见李蚂,max已经定义成带两个参数的宏了,你再去定义一个,程序会用该宏的定义去替哪春埋换,
但发现你的参数是3个,和宏定义的2个矛盾,就提示出错了。
建议把你的max函数改成别的名字森岩, 比如myMax之类的,免得和系统定义冲突。
展开全部
Non-ANSI names for compatibility */
#ifndef __cplusplus
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
可见,max已经定义成带两个参数的宏了,你再去定义一个,程序会用该宏的定义去替凯宴换,
但发现你的参数是3个,和宏定义的2个矛盾,就提示出错了。
建议把你的max函数圆族改成别的盯腔银名字, 比如myMax之类的,免得和系统定义冲突。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序空搜早斗雀第一行加写:
#define NOMINMAX
用来取消Macros min(a,b) and max(a,b) ...的定义。漏大
#define NOMINMAX
用来取消Macros min(a,b) and max(a,b) ...的定义。漏大
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int max(int x,int y,int z); /帆禅/函数中不能声明和定义函数
我中歼错了,可态培尘以局部声明,楼上正解
我中歼错了,可态培尘以局部声明,楼上正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询