我们可以使用main,printf,scanf来命名标识符吗?

Par*_*ita 4 c

int main()
{
  int main=5;
  printf("%d",main);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有错误,gcc编译器打印5.但如果我写

 int main()
    {
        int printf=5;
        printf("%d",printf);
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

编译器显示错误..为什么?

pmg*_*pmg 9

在第一个示例中,您"隐藏"该main功能,将其替换为int对象.

在第二个示例中,您将"隐藏"该printf功能,将其替换为int对象.试图打电话int是非法的.

5("foo"); /* illegal to call "function" 5 */
Run Code Online (Sandbox Code Playgroud)