C++ 变量名和参数名

C++ 变量名和参数名,c++,C++,该代码是否将“模式1”设置为输入参数mode?如果有人能解释这里发生了什么以及其他有趣的警告和解决办法,那就太好了!我只是好奇这段代码是如何工作的。定义为输入参数的局部变量mode总是优先于全局变量,因此您编写的语句将一事无成。 [编辑]假设您使用C++,可以使用范围解析运算符引用全局变量 typedef enum { MGL_TRIANGLES, MGL_QUADS } MGLpoly_mode; MGLpoly_mode mode; //mode 1 void mglBegin(MGLp

该代码是否将“模式1”设置为输入参数mode?如果有人能解释这里发生了什么以及其他有趣的警告和解决办法,那就太好了!我只是好奇这段代码是如何工作的。

定义为输入参数的局部变量
mode
总是优先于全局变量,因此您编写的语句将一事无成。 [编辑]假设您使用C++,可以使用范围解析运算符引用全局变量

typedef enum {
MGL_TRIANGLES,
MGL_QUADS
} MGLpoly_mode;

MGLpoly_mode mode; //mode 1

void mglBegin(MGLpoly_mode mode)
{
mode = mode;  //mode 1 = input parameter mode
}

1) 可以使用调试器一步一步地检查代码,以了解任何代码段是如何工作的。2) 你在问什么注意事项或解决办法?这段代码甚至不会编译,因为它缺少
main
,但不管怎样,函数
mglBegin
只是将传递给它的参数分配给它自己,从函数调用方的角度看,没有明显的副作用。3)考虑从一本好书中学习,而不是随机编码(我不确定你是在C++中编码还是因为C++,所以我不能推荐特定的书目)。这个代码设置“模式1”等于输入参数,称为模式吗?否,它将参数
mode
设置为自身。问题不应同时标记为[c]和[c++],除非问题特别涉及到它们之间的差异。它们是不同的不兼容语言,所以请只使用您实际使用的语言的标记。编译器如何神奇地知道,在同一行中,您希望同一个单词表示两种不同的东西?@AlgirdasPreidžius:代码不需要
main
来编译。这个问题用C标记,除了C++之外,还不清楚,什么是编译程序的编译,代码没有运算范围。所以Sanchit Anand的答案只在C++中工作?在C中有没有办法做到这一点?@TariqueShams•使用与全局变量名不同的参数名。在C和C++中都有工作。@ Elijay,这是一个简单的解决方案。我相信我也应该遵循这种结构。“我只是好奇周围是否有很酷的作品?”TariqueShams No。您会发现一些C编码标准要求您根据变量的作用域和存储类型修改变量的名称。例如,全局
模式可以是
gmode
,参数模式可以是
pmode
。另一些则需要更多的修饰,比如用模块标识符作为变量的前缀,大致(非常大致)模拟名称空间,以及防止翻译单元之间的名称冲突。也使纯文本搜索更容易。
::mode = mode;  //mode 1 = input parameter mode