2014-10-08 12 views
6

Niedawno natknąłem się na podwójne oświadczenie return (jedno z nich zostało dodane przez pomyłkę) w naszym projekcie i zastanawiam się, dlaczego compiler nie wyświetla ostrzeżenia ?!Deklaracja zwrotu nigdy nie zostanie wykonana Ostrzeżenie

Ok, dodałem do innych flag ostrzegawczych, ale wciąż nie ma szczęścia.

Got ostrzeżenie - z kodem do wykonania po return stwierdzeniem:

enter image description here

nie dostał ostrzeżenie, ale nadal sekund return oświadczenie nie zostanie wykonany. enter image description here

Nawet jeśli dodam coś takiego, jeszcze nie ostrzegawczego

enter image description here

Czy istnieje dodatkowa flaga ostrzegawcza na to, czy kompilator nie jest wystarczająco inteligentny?

+2

ponieważ twoja metoda zwraca kod wyjścia przed wykonaniem, który koduje –

+0

dla obu przykładów, więc co z tego? – Injectios

+0

dla obu przykładów twoja metoda nigdy nie zostanie wykonana po powrocie –

Odpowiedz

2

Dobry połów!

nie zgłasza ostrzeżenia i nie ma innej flagi ostrzegawczej, która by to zrobiła.
Nawet Static Analyzer nie złapie tego błędu!

(Testowane z Xcode 6.1 GM 2)

+0

, ale wszystkie ostrzeżenia znikną ... Przypuszczam, że jest to nieodpowiednie dla topicstartera. – Vlad

+0

Dlaczego wszystkie ostrzeżenia powinny zniknąć? '-Wunomachable-code' włącza ** więcej ** ostrzeżeń, chociaż nie złapie tego wspomnianego przez rozrusznik tematu. – fluidsonic

+0

Miałem na myśli ostrzeżenia o innym "martwym kodzie". – Vlad

-1

Spróbuj tego ...

-(NSString*) makeSomeStringForMe { 

    NSString *someString = @"some string"; 

    return someString; 

} 
+0

Czy możesz zmodyfikować swoje pytanie, aby dodać wyjaśnienie tego, co robi ten kod i jak rozwiązuje to pytanie? – Kenster

0

Zastosowanie -Wno-unreachable-code dla pliku w fazach budowy.