C++ C++;变量名(可以将main声明为变量,但对于其他函数名,情况并非如此)

C++ C++;变量名(可以将main声明为变量,但对于其他函数名,情况并非如此),c++,function,variables,main,variable-names,C++,Function,Variables,Main,Variable Names,我们能够将main关键字声明为变量名(没有错误);但是,对于其他函数(即用户定义的函数),情况并非如此。为什么会这样 多谢各位 (使用用户定义函数和相同变量名的代码会产生错误:error:“int stardooms”重新声明为不同类型的符号 注:以前的声明'int stardooms(int) #包括 int main(){ int星斗(int); 星际末日; std::cout在作用域中声明的名称将在外部作用域中隐藏相同名称的声明。一个名称在给定的作用域中不能有多个冲突的声明,否则您将看到错

我们能够将main关键字声明为变量名(没有错误);但是,对于其他函数(即用户定义的函数),情况并非如此。为什么会这样

多谢各位

(使用用户定义函数和相同变量名的代码会产生错误:
error:“int stardooms”重新声明为不同类型的符号

注:以前的声明
'int stardooms(int)

#包括
int main(){
int星斗(int);
星际末日;

std::cout在作用域中声明的名称将在外部作用域中隐藏相同名称的声明。一个名称在给定的作用域中不能有多个冲突的声明,否则您将看到错误

在第二个示例中,函数作用域中只有一个
main
声明,它将
int main()
声明隐藏在外部斜坡中。(函数名称在外部作用域中,而不是它们自己的作用域中。)在第一个示例中,函数作用域中有两个
stardooms
声明


在第二个示例中,如果还要在函数作用域中重新声明
int main()
,则会看到相同的错误。同样,如果要将函数
stardooms
的定义移动到函数
main
的定义之前,并删除声明
int stardooms(int)
main
函数的作用域中,您不会得到该错误(但尝试使用类似于函数的整数会得到不同的错误).

在作用域中声明的名称将在外部作用域中隐藏相同名称的声明。一个名称在给定的作用域中不能有多个冲突的声明,否则您将看到错误

在第二个示例中,函数作用域中只有一个
main
声明,它将
int main()
声明隐藏在外部斜坡中。(函数名称在外部作用域中,而不是它们自己的作用域中。)在第一个示例中,函数作用域中有两个
stardooms
声明


在第二个示例中,如果还要在函数作用域中重新声明
int main()
,则会看到相同的错误。同样,如果要将函数
stardooms
的定义移动到函数
main
的定义之前,并删除声明
int stardooms(int)
main
函数的作用域中,您不会得到该错误(但尝试使用像函数一样的整数会得到不同的错误)。

我们可以将main关键字声明为变量名“-
main
不是变量名。“我们可以将main关键字声明为变量名”“代码>主< <代码>不是一个。它也可以指向一个C++关键字列表(类似),因为OP似乎(错误地)认为<>代码>主< /C> >。谢谢!!从来没有想过这将涉及到函数的范围……也可能是指向一个C++关键词列表(如),因为OP似乎(错误地)认为
main
是一个。谢谢,伙计!没想到这和函数的范围有关。。。
#include<iostream>
int main(){
    int stardooms(int);
    int stardooms;
    std::cout<<stardooms(5);
    return 0;
}
int stardooms(int a){
    if(a)
    return a;
    return 0;
}
#include<iostream>
int main(){
    int main=5;
    std::cout<<main;
    return 0;
}