我有一些用 C 编写的代码(专门针对 gcc),它们也需要编译为 C++(g++)。我遇到了一个我难以处理的结构。
许多地方使用了一些宏,它们基本上采用常量的地址,尽管它们也适用于非常量。该构造最终看起来像这样:
int *iptr = (&(int){5});
这本质上让发生的是指定一个常量,然后可以将指向该常量的指针用于需要 int 指针但只指定一个常量的函数中。也可以在花括号内指定多个值来构造一个实际的临时数组。而且效果很好。
问题在,g ++根本不喜欢这个,抛出
error: non-lvalue in unary `&'
更新:看起来我可以通过执行以下操作来获取 C++ 中常量的地址:
const int & ref = 5;
这就是我试图采取的方向的起点。