如何为变量分配别名

How to assign to a variable an alias

本文关键字:分配 别名 变量      更新时间:2023-10-16

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

我是否坚持使用宏,如
#DEFINE Variable Alias
<标题>在简介:
  1. 我更喜欢在C
  2. 中应用它
  3. 我有一个信号,它可以是一个以上类型的变量(温度,距离等)
  4. 我想为该信号分配多个别名

我目前在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.

Eric Lippert的回答:

int a;
int * const b = &a;

现在*ba相同,它不能指向其他任何东西,编译器不会生成额外的代码来处理a*b,也不会为指针保留空间。

你说

int a, *b;
b = &a; // *b is now an alias of a

我喜欢把指针想象成当你使用星号时给你一个变量的东西,而把&符号想象成产生别名的操作符。

c++,类似于:

struct A{
    union{
        int temperature;
        int sametemperature;
    };
};
A a;
a.temperature = 2;
a.sametemperature = 3;

根据编译器和兼容性标志,您可以在普通c中解决这个问题。总之,尝试利用匿名联合。问题是旧的,但是,我正在寻找相同问题的答案,并意识到有一个没有指针/引用或宏的解决方案。

为什么不将其作为参数传递给函数并在函数实参中使用适当的名称呢?我不认为#define是个好主意,因为它可能导致混淆。这是C。当然你可以在c++中使用别名

我认为#define不适合这个用例。首先,它是一个预处理器指令,在程序编译之前进行处理。你失去了编译器给出有意义的警告的机会,你可能会得到一个奇怪的错误或难以修复的警告。

指针似乎工作,但你需要使用*(解引用操作符),每次这是危险的,更难读,如果你错过了*你可能会得到一个分段错误或类似的内存错误。

试着贴一些代码,我们可能会找到一个适合你需要的合适的解决方案。