#define
не имеет значения.
После предварительной обработки ваш фрагмент в точности соответствует:
bool update(const char* json) {
const char* theType = doc["type"]; // "this"
int theVer = doc["version"]; // 2
if ( (theVer > 1) && (theType == "this") ) {
return true
} else {
return false;
}
}
Таким образом, проблема сводится к тому, «как мы сравниваем две C-строки?», С гораздо более простым примером, подобным этому:
int main()
{
const char* theType = "this";
const bool matches = (theType == "this");
}
Ответ такой: не с ==
, а с strcmp
.