2012-05-18 16 views
12

Współpracownik kopalni szukał za pośrednictwem jednego z naszych odziedziczonych baz kodu i znaleźć następującą linię:Co to jest wyrażenie literałowe w języku boolowskim?

ATLASSERT(rtaddress == m_lRTAddress && "Creation settings should match FIFO");

nie rozumiemy, jaki jest cel ciąg dosłownym jest; czy to coś więcej niż tylko komentowanie? Sposób, w jaki to widzę, jeśli rtaddress NIE równa się m_lRTAddress, wówczas ciąg nigdy nie zostanie oceniony z powodu zwarcia. Jeśli rtaddress ma wartość równą m_lRTAddress, wówczas literał łańcuchowy zostanie oceniony, ale literał ciągu obliczany dla wyrażenia logicznego zawsze zwróci true; więc o co chodzi?

+17

To jest sztuczka, aby ten ciąg pojawił się w oknie dialogowym potwierdzenia. Dokumentowanie z ostrzeżeniem. –

+0

To naganne marnowanie przestrzeni i obskurantyzm. Użyj komentarza. Komunikat o błędzie asercji przekieruje cię do linii kodu źródłowego (przynajmniej tak będzie, jeśli ATLASSERT jest jak standardowy aser). – dave

Odpowiedz

13

Sądzę, że jest tak, że jeśli twierdzenie nie powiedzie się, możesz zobaczyć przyczynę dodania assert.