Widzę w dużo starszego oprogramowania i złych samouczków w Internecie, które zalecamy zastosowanie exit(-1), return -1lub podobny do reprezentowania „nieprawidłowe zakończenie”. Problem w tym, że przynajmniej w POSIX -1nigdy nie był i nie jest prawidłowym kodem statusu. man 3 exitilustruje, że exit()zwraca wartość elementu status & 0377nadrzędnego, co oznacza, że -1staje się 255. W systemach innych niż POSIX EXIT_FAILUREzaleca się przenośność. Ale nigdy nie widzę, że „-1 oznacza nieprawidłowe zakończenie” w połączeniu z „EXIT_FAILURE może być czymś innym niż 1”, co wskazuje, że wyraźnie wierzą, że „-1” jest konwencjonalne nawet w systemach innych niż POSIX.
Oto przykład pytania StackOverflow, które to utrwala. Oprogramowanie „unrealircd” jest także przykładem programu, który używa exit(-1)do zakończenia programu. W praktyce utrudnia to komunikację systemd.
Skąd wziął się ten anty-wzór? Czy jest ważny w jakimś kontekście?
unsigned char.
charponieważ jego zakres wartości wynosi od -128 do 127. Ponadto stwierdziłem, że „-1” jest konwertowane na „255” w moim ciele zapytania .