我想用不同的名称调用相同的变量,如何为其分配别名?
我是否坚持使用宏,比如
#DEFINE Variable Alias
我目前正在C中使用函数作为重命名方法。
所以给定变量:int signal
我会做以下
int Temperature(){return signal;}
答案 0 :(得分:21)
在C ++中为变量提供别名的方法是使用引用。例如,
int i = 42;
int& j = i; // j is an alias for i
const int& k = j; // k is an alias for i. You cannot modify i via k.
答案 1 :(得分:8)
你说
int a, *b;
b = &a; // *b is now an alias of a
我喜欢把一个指针想象成一个东西,当你为它加注时给你一个变量,并且将&符号作为别名制作运算符。
答案 2 :(得分:4)
为什么不将它作为参数传递给函数并在函数参数中使用适当的名称?我认为#define不是一个好主意,因为它可能导致混淆。那是在C. 当然,您可以在C ++中使用别名。
答案 3 :(得分:4)
Eric Lippert回答的另一种选择:
int a;
int * const b = &a;
现在*b
与a
相同,不能指向其他任何内容,编译器不会生成额外的代码来处理a
或*b
,既不为指针预留空间。
答案 4 :(得分:1)
我认为#define不是为这个用例设计的。首先是因为它是一个预处理程序指令,它在程序编译之前处理。您失去了编译器提供有意义警告的机会,您最终可能会遇到难以修复的奇怪错误或警告。
指针似乎有效,但每次都需要使用*(取消引用运算符)这是危险的,更难阅读,如果你错过*,你可能会遇到分段错误或类似的内存错误。
尝试发布一些代码,我们可能会找到适合您需求的正确解决方案。