如何为变量分配别名

我想用不同的名称调用相同的变量,如何为其分配别名?

我是否坚持使用宏,比如

#DEFINE Variable Alias 

综上所述:

  1. 我更喜欢用C语言申请
  2. 我有一个信号,可以是多种类型的变量(温度,距离等)。
  3. 我想为该信号分配多个别名

我目前在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中使用它。简而言之,请尝试利用匿名联合。 问题很老但是,我正在寻找同一问题的答案,并意识到有一个没有指针/引用或宏的解决方案。