Kod jest zwodniczo prosty. Wygląda jak cztery linie. Robi jedną rzecz. Wyświetla tekst na ekranie. Ale za tym pojedynczym działaniem kryje się strukturalna umowa pomiędzy tobą, kompilatorem i systemem operacyjnym. Zrozumienie tej umowy to pierwszy krok do prawdziwej kontroli nad tym, co robi komputer, a nie tylko domyślne uruchamianie skryptów.
Zależność od biblioteki
Proces rozpoczyna się przed wykonaniem jakiejkolwiek logiki. Pierwsza linia, #include , nie jest kodem, który zostanie wykonany. To jest instrukcja preprocesora. Zawiera standardową bibliotekę wejść/wyjść. Bez tego kompilator nie wiedziałby, co zrobić z poleceniami takimi jak „printf”.
stdio.h oznacza standardowe wejście i wyjście. Obsługuje podstawowe operacje: odczyt z klawiatury (standardowe wejście) i zapis na monitor (standardowe wyjście). Zarządza także plikami tekstowymi na dysku. Istnieją inne biblioteki w C, takie jak string, time i math, ale stdio jest punktem wyjścia dla prawie wszystkiego. Biblioteka to po prostu wcześniej napisany kod połączony w pakiet, dzięki czemu nie trzeba wymyślać koła na nowo. Nie piszesz obsługi pamięci niskiego poziomu dla wyjścia tekstowego. Podłączasz pakiet. Używasz tego.
Punkt wejścia
Każdy program C musi mieć punkt wejścia. To jest funkcja „int main()”. Egzekucja zaczyna się tutaj. Jeśli nie ma main, łączenie nie powiedzie się. Program nie istnieje.
„int” przed „main” wskazuje, co funkcja zwróci po zakończeniu. Nawiasy są puste, ponieważ ta wersja nie przyjmuje żadnych argumentów. Tutaj wszystko jest proste. Jednak następujące po nich nawiasy klamrowe { i } są wymagane. Definiują blok. Wszystko w środku należy do „głównego”. Wszystko na zewnątrz jest ignorowane przez zakres tej konkretnej funkcji.
Mechanizm wyjściowy
Wewnątrz bloku znajdziesz instrukcję printf. To tutaj dzieje się magia. printf wysyła dane na standardowe wyjście. Dla większości użytkowników oznacza to okno terminala lub konsolę.
Tekst w cudzysłowie jest ciągiem formatującym. Mówi ‘printf’, co dokładnie ma wyświetlić. Może zawierać ciągi znaków, takie jak „Hello World”. Może obsługiwać sekwencje ucieczki, takie jak \n dla nowej linii. Może również używać symboli zastępczych dla zmiennych, chociaż jest to na głębszym poziomie. Jeśli używasz systemu UNIX, polecenie man 3 printf otworzy stronę podręcznika zawierającą szczegółowe informacje na temat specyfikatorów formatu. Użytkownicy systemu Windows zwykle polegają na dokumentacji kompilatora, ale podstawowe zachowanie pozostaje identyczne.
Kod wyjścia
Ostatnia linia to return 0;. Wydaje się to banalne. Po co coś zwracać? Ponieważ procesy nie działają w próżni. Komunikują się z powłoką, która je wystrzeliła.
Kod wyjścia 0 sygnalizuje sukces. Oznacza to „brak błędów”. Wartość niezerowa zwykle wskazuje na awarię lub określony kod stanu. Powłoka sprawdza tę wartość po zakończeniu działania main. Umożliwia to skryptom łączenie poleceń w łańcuchy i uruchamianie następnego kroku tylko wtedy, gdy poprzedni zakończył się pomyślnie. To jest uścisk dłoni. Potwierdzenie, że zadanie zostało wykonane bezbłędnie.
Dlaczego to jest ważne?
Można by pomyśleć, że to tylko szablonowy kod. To jest błędne. To jest szkielet dowolnego programu wykonywalnego, jaki kiedykolwiek napiszesz w C. Jeśli źle połączysz bibliotekę, pojawią się nierozwiązane błędy linków. Jeśli zapomnisz typ zwracany, kompilator wyświetli ostrzeżenie



























