如何为变量分配别名
How to assign to a variable an alias
我想用不同的名称调用相同的变量,我如何分配它的别名?
我是否坚持使用宏,如#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.
Eric Lippert的回答:
int a;
int * const b = &a;
现在*b
与a
相同,它不能指向其他任何东西,编译器不会生成额外的代码来处理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不适合这个用例。首先,它是一个预处理器指令,在程序编译之前进行处理。你失去了编译器给出有意义的警告的机会,你可能会得到一个奇怪的错误或难以修复的警告。
指针似乎工作,但你需要使用*(解引用操作符),每次这是危险的,更难读,如果你错过了*你可能会得到一个分段错误或类似的内存错误。
试着贴一些代码,我们可能会找到一个适合你需要的合适的解决方案。
相关文章:
- 将数组的地址分配给变量并删除
- 部分定义/别名模板模板参数
- vector.resize()中的分配错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 函数中堆分配的效果与缺少堆分配的情况
- 如何在C++20中创建模板别名的推导指南
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 获取字符串的长度并将其分配给数组
- 将地址分配给本地指针后,公共对象的变量将消失
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 我在二维向量中是否正确分配了内存
- 正在尝试重载二进制搜索树分配运算符
- GlobalAlloc而不是其他分配方法
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 类型别名允许分配任意指针,尽管 int* 是必需的
- 如何(优雅地)根据字符别名分配引用成员
- 如何为变量分配别名