Wpis z mikrobloga

#cpp #programowanie

Fajne dzisiaj błędy poprawiałem. Z kategorii tych durnych.

char* version[3] =

if (version == "2.5")
//zrób coś

Nie wiem czy każdy kompilator na to pozwoli, ale nasz akurat na to pozwolił i porównywał sobie dwa wskaźniki xD

Jeszcze ten jest dobry:

if ( string(version) != "2.4" || string(version) != "2.5" )
return false;

Tu miało być sprawdzenie czy mamy plik w jednej z dwóch obsługiwanych w tej funkcji wersji, ale w momencie gdy tam jest || zamiast && to jakoś tak średnio to działało xD
  • 7
@KrzaQ2: W tej chwili nie jestem pewien czy tam był rozmiar tablicy, bo tak klepię z pamięci. Nie wnikałem w deklarację, bo od razu zauważyłem, że porównuje dwa wskaźniki i nie drążyłem tematu.

Tam mogło być char* version = cośtam. I to by miało więcej sensu. U nas sobie robimy jakieś stałe w ten sposób:

const char* dupa = "dupa"

Więc raczej było char* version = przypisanie.
Nie wiem czy każdy kompilator na to pozwoli, ale nasz akurat na to pozwolił i porównywał sobie dwa wskaźniki xD


@Khaine: każdy kompilator tak robi. ŻADEN kompilator C++ nie porówna Ci stringów bezpośrednio ( jak strcmp czy coś w podobie ). Generalnie nie ma też żadnej gwarancji nawet, że jeśli użyjesz tego samego constant stringa dwa razy w kodzie to on to spłaszczy do tego samego wskaźnika w .rodata ( i