我正在从旧的gcc(3.x)切换到4.9.2,并且遇到了一些编译问题:

if (ROWID_IS_NULL(&pSumItem->getRowId()))


getRowId()定义为:

rowid_t SumItem::getRowId()
{
    return row_id;
}


宏定义为:

#define ROWID_IS_NULL(a) \
    ((a)->key == 0 && (a)->ip_addr == 0)


新代码已经使用运算符重载来进行计算,但是仍然有很多使用非标准技术的旧代码。是否可以在不更改代码的情况下解决此问题?

错误信息:


  错误:使用临时地址[-fpermissive]


编辑:不更改代码的含义

我想保持这条线的工作

if (ROWID_IS_NULL(&pSumItem->getRowId()))

最佳答案

我不知道您想参加“不更改代码”部分的内容。显然,无论应用了什么修复程序,都以某种方式改变了它们。

方法将是简单的解决方法:

static inline bool ROWID_IS_NULL(const rowid_t &id) {
    return(id.key == 0 && id.ip_addr == 0);
}


但是,诚然,这将要求您在对&的调用中删除显式的ROWID_IS_NULL运算符。

关于c++ - 修复错误:在不更改代码的情况下获取临时地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29738908/

10-11 22:13
查看更多