Załóżmy, że mam makro zdefiniowane, i używam tego makra wewnątrz if elseCzy mogę używać operatora trójskładnikowego w definicji jako przeciwnej do używania, jeśli?
#include <iostream>
#define LOG(x) {if (x) std::cout << "What is up" << std::endl;}
int main(void) {
if (true)
LOG(true);
else
false;
return 0;
}
Teraz jest to trudne przypadek, zdałem sobie sprawę, że w zależności od wcięcia nie mogą być pewne dwuznaczności, o którym „jeżeli "the" else "powinno iść z.
ja wymyślił ten soultion
(some_condition) ? dosomething() : true;
To rozwiązuje problem, ale nie jestem pewien co repercussion posiadania prawdziwego zdania są. Czy to dobre rozwiązanie, czy też jest lepsze podejście?
EDYCJA: Oto kod, którego użyłem, to nie działa. Sprawdź, czy możesz to naprawić?
Wiele odpowiedzi już, ale gdzie jest "X"? –
Dlaczego tu pojawia się wcięcie? W powyższym warunku, nawet używając powyższego 'makro' jeśli' somebool' jest fałszywe, to nawet nie jest wykonywane 'else'. Jest to 'if-else' z' some_condition' jako kontrolerem pod kontrolką 'if' z' somebool'. Symbol "else" jest powiązany z poprzednim "if", chyba że nie ma separacji za pomocą zakresów. –
Nie ma dwuznaczności na temat "else": idzie on z najbliższym blokiem 'if' w tym samym zakresie, który nie ma jeszcze bloku' else'. Składnia C++ ** nie ** zależy od wcięcia. –