C++中函数名和变量名相同不行吗?

#include <iostream>
using namespace std ;

int choice (int choice)
{
return choice ;
}
int main ( )
{
int choice = 1 ;
choice (choice) ;
}
Visual Studio 2010报错,将choice改为Choi,就正常运行了,这是为什么?C++不允许函数名和变量名相同吗?

C++编程时最好不要将变量名与函数同名,否则经常出现一些二义性错误。比如在主函数中的choice,编译器将它理解为是函数名而不是变量名,这样一来在参数中填入一个函数名,就和chocie的声明不一致了,所以就出错了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-31
对 很明显的二义性 程序不知道该调用哪个
所以得改 纠正自己的变成写法 比如函数名第一个字母小写 其后每个单词首字母大写 如adfQuality 而变量名可采用全大写 ADCQUALITY之类的
这样可以完全区别
第2个回答  2011-01-01
可以一样的,没有要求,最好用的时候不要一样了。影响程序的可读性。不利于以后的修改查错。自己都难分清了,要让别人读你的程序,也就更不好理解了。
第3个回答  2011-01-01
不允许在相同的存储区有相同的标识符。如动态存储区和静态存储区可以存在相同的标识符。
第4个回答  2015-10-17
C++的语法规定:
1、变量、函数、结构、类 ……等等,在相同的一个作用域中,只能有一个唯一的名称。
2、全局变量与局部变量可重名,同名情况下优先认可局部变量而不认可全局变量。
3、特别提示,这些规定在不同的编程器、编程环境下不尽相同,有的编程环境下,类与函数重名并不报错。日常编程时,要自已注意规避容易误解的重名。一般重名变量的定义只用在一些非关键性的变量上,比如循环计数器之类的,并且使用前都会置零。本回答被网友采纳
相似回答