我正在从旧的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/