用define替换两次函数调用

Replace two calls of functions with define

本文关键字:两次 函数调用 define 替换      更新时间:2023-10-16

我想替换Qt4中QStringchar*的转换流程:

str.toLatin1().data()

与Qt3相同:

str.latin()

使用如下结构:

#define toLatin1().data() latin()

是真的吗?还有别的办法吗?

我认为最可维护的解决方案是为它引入一个函数:

inline const char* qstringToLatinChar(const QString &str)
{
#if Qt4
  return str.toLatin1().data();
#else
  return str.latin();
#endif
}

这样的函数即使用sed之类的也可以在已有的代码位点上快速替换。它还有一个额外的好处,就是为操作引入了一个有意义的名称。