无意发现个问题,vc++6.0 函数声明 必须在main函数括号中最前面吗?
#include<stdio.h>用的是VC++6.0,这是编译器问题吗?例子voidmain(){intmax(intx,inty);//max声明函数,在这个位置上不...
#include <stdio.h>
用的是VC++6.0,这是编译器问题吗?
例子
void main()
{
int max(int x, int y);//max声明函数,在这个位置上不会报错
int a,b,c;
scanf("%d %d",&a,&b);//max函数声明在scanf后面 在max被调用前声明会被报错!
c=max(a,b);
printf("%d\n",c);
}
int max(int x,int y)
{
int z;
z=x>y?x:y;
return (z);
}
错误信息 'max' undefined; assuming extern returning int,
明明声明在调用前,居然说没定义 展开
用的是VC++6.0,这是编译器问题吗?
例子
void main()
{
int max(int x, int y);//max声明函数,在这个位置上不会报错
int a,b,c;
scanf("%d %d",&a,&b);//max函数声明在scanf后面 在max被调用前声明会被报错!
c=max(a,b);
printf("%d\n",c);
}
int max(int x,int y)
{
int z;
z=x>y?x:y;
return (z);
}
错误信息 'max' undefined; assuming extern returning int,
明明声明在调用前,居然说没定义 展开
5个回答
展开全部
在C语言中,函数体分为两部分,声明部分和可执行部分。而且规定声明部分必须在可执行部分之前。声明部分可以包含变量的定义,函数的声明等等。
在你的这个例子中,scanf("%d %d",&a,&b);语句属于可执行部分。把函数声明放在这个语句的后边肯定会报错,因为违反了声明部分和可执行部分的规定。
另外函数的声明可以在调用函数的内部声明,也可以在函数外部声明,声明的位置不同,其作用域不同,被声明的函数的作用域是从声明点开始直到当前文件的结束。具体要在什么地方声明一个函数,还需要根据自己的需要来决定。上边有人说必须在main函数之前声明,也有说要在外部声明,都是不准确的。
以上关于声明部分和可执行部分的顺序是C语言的语法规定,而C++语言没有这样的规定,只要在使用之前对需要用的变量或者函数声明即可。
VC可以编译C程序也可以编译C++程序,默认情况下,如果你的文件后缀是.C,则按照C语言的语法来编译,如果后缀是.CPP,则按照C++的语法编译。
所以你发生以上的错误,文件名应该是.C后缀,试试看,如果把文件名改成.CPP后缀,则把函数声明放在scanf语句的后边就可以正常编译了。
在你的这个例子中,scanf("%d %d",&a,&b);语句属于可执行部分。把函数声明放在这个语句的后边肯定会报错,因为违反了声明部分和可执行部分的规定。
另外函数的声明可以在调用函数的内部声明,也可以在函数外部声明,声明的位置不同,其作用域不同,被声明的函数的作用域是从声明点开始直到当前文件的结束。具体要在什么地方声明一个函数,还需要根据自己的需要来决定。上边有人说必须在main函数之前声明,也有说要在外部声明,都是不准确的。
以上关于声明部分和可执行部分的顺序是C语言的语法规定,而C++语言没有这样的规定,只要在使用之前对需要用的变量或者函数声明即可。
VC可以编译C程序也可以编译C++程序,默认情况下,如果你的文件后缀是.C,则按照C语言的语法来编译,如果后缀是.CPP,则按照C++的语法编译。
所以你发生以上的错误,文件名应该是.C后缀,试试看,如果把文件名改成.CPP后缀,则把函数声明放在scanf语句的后边就可以正常编译了。
展开全部
按说只要在调用之前声明就不会报错
这个牵扯到变量或者函数的作用域问题
外部变量,作用域是声明的地方到文件的结束为止
内部变量,作用域是声明这个变量到这个函数结束为止
函数一般都是外部的,我的一个建议啊
最好是在main前面声明并且写代码,这样永远不会出错,而且易懂易读
这个牵扯到变量或者函数的作用域问题
外部变量,作用域是声明的地方到文件的结束为止
内部变量,作用域是声明这个变量到这个函数结束为止
函数一般都是外部的,我的一个建议啊
最好是在main前面声明并且写代码,这样永远不会出错,而且易懂易读
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
函数的声明要在main函数外才行
比如这里应该先写
int max(int x, int y);//max声明函数
再写
void main()
{
...
}
要在主函数前
比如这里应该先写
int max(int x, int y);//max声明函数
再写
void main()
{
...
}
要在主函数前
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-06
展开全部
不是编译器问题,应该是语法规则。常用方法是在主函数前使用声明。记住就行了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该不会吧!只要在调用前声明就行了噻!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询