如何为变量分配别名
我想用不同的名称调用相同的变量,如何为其分配别名?
我是否坚持使用宏,比如
#DEFINE Variable Alias
综上所述:
- 我更喜欢用C语言申请
- 我有一个信号,可以是多种类型的变量(温度,距离等)。
- 我想为该信号分配多个别名
我目前在C中使用函数作为重命名方法。
所以给定变量: int signal
我会做以下事情
int Temperature(){return signal;}
在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.
你说
int a, *b; b = &a; // *b is now an alias of a
我喜欢把一个指针想象成一个东西,当你为它加注时给你一个变量,并且将&符号作为别名制作运算符。
为什么不将它作为参数传递给函数并在函数参数中使用适当的名称? 我认为#define不是一个好主意,因为它可能导致混淆。 那是在C.当然你可以在C ++中使用别名。
替代Eric Lippert的答案:
int a; int * const b = &a;
现在*b
与无法指向其他任何内容相同,编译器不会生成额外的代码来处理a
或*b
,也不会为指针保留空间。
我认为#define不是为这个用例设计的。 首先是因为它是在程序编译之前处理的预处理程序指令。 您失去了编译器提供有意义警告的机会,您最终可能会遇到难以修复的奇怪错误或警告。
指针似乎工作但你需要每次都使用*(取消引用运算符)这是危险的,更难阅读,如果你错过了*你可能会得到分段错误或类似的内存错误。
尝试发布一些代码,我们可能会找到适合您需求的正确解决方案。
C ++,类似于:
struct A{ union{ int temperature; int sametemperature; }; }; A a; a.temperature = 2; a.sametemperature = 3;
根据编译器和兼容性标志,您可以在简单的C中使用它。简而言之,请尝试利用匿名联合。 问题很老但是,我正在寻找同一问题的答案,并意识到有一个没有指针/引用或宏的解决方案。