在C语言中能否用同名变量与函数?报错是否由此引发?
C语言中变量与函数同名的问题分析
- C语言语法上允许变量和函数使用相同名称,但作用域规则会导致同名标识符的覆盖问题,这正是你遇到报错的核心原因。
- 你的代码里,
main函数内部定义了局部变量sumOfSquare,而全局作用域下存在同名的sumOfSquare函数。在main函数的作用域内,局部变量的优先级高于全局标识符,所以当你写sumOfSquare(a, b)时,编译器会把sumOfSquare识别成那个int类型的局部变量——变量当然不能像函数那样传参调用,于是就出现了报错:called object 'sumOfSquare' is not a function or function pointer。 - 报错信息里的
note: declared here指向的就是main里定义的int a, b, sumOfSquare;,也直接佐证了这一点。
解决办法很简单:把局部变量或者函数的名称改成不一样的,避免作用域内的同名冲突。比如把局部变量改成result,代码就能正常调用函数了。
内容的提问来源于stack exchange,提问作者Renulucshmi Prakasan
相关产品推荐
相关产品推荐

