为什么变量名不能和函数名同名?
double caclc = calc();就是非法的;
改成全局函数double caclc = ::calc();就合法呢?
求详解,详解,谢谢大家
[解决办法]
函数名也可以单独使用,作为函数指针
如果变量和函数同名,那就相当于两个变量同名
此外,别写这种给自己找麻烦的代码
编译器是辅助你不是考验你,要为难编译器没问题,编译器完全可以用各种标准允许但你就是想不到的结果来回报你——最后是谁倒霉自己去想
[解决办法]
可以同名啊,哪里有讲过不能同名。。只不过会覆盖而已,函数属于全局作用域,同一作用域不能有两个同名变量,所以你与函数同名的变量不能是全局变量,但是可以是局部变量,局部变量会覆盖函数的定义,也就是在该局部变量作用域内你无法调用该函数
[解决办法]
如果允许的话,
void abc() {}; // Avoid xyz() {}; // Btypedef void (*F)();void main(){ F xyz = abc; xyz(); // 调用哪一个? A 还是 B?}
[解决办法]