在我的c ++代码中一起使用c ++ rest和python库时,出现函数“ tolower”的错误,该错误未定义。 我了解了,因为在python pyport.h中有一个
#undef tolower
#define tolower(c) towlower(btowc(c))
但是同时c ++ rest / asyncrt_utils.cpp在cmp类中有一个称为tolower的私有方法。
class cmp
{
public:
static int icmp(std::string left, std::string right)
{
size_t i;
for (i = 0; i < left.size(); ++i)
{
if (i == right.size()) return 1;
auto l = cmp::tolower(left[i]);
auto r = cmp::tolower(right[i]);
if (l > r) return 1;
if (l < r) return -1;
}
if (i < right.size()) return -1;
return 0;
}
private:
static char tolower(char c)
{
if (c >= 'A' && c <= 'Z')
return static_cast<char>(c - 'A' + 'a');
return c;
}
};
对此有什么解决方案?我如何确保编译同时保留两者
P.S。我尝试检查在我的代码中调用这些.h文件的顺序。 总是在列表末尾调用c ++ rest。
任何建议将不胜感激。希望就类似的事情进行讨论。我想了解更多有关编译器及其工作原理的信息