KWALIFIKACJA INF2 + INF3 - CZERWIEC 2014

PYTANIE NR 9.
Wyrażenie #include <stdio.h> pojawiające się na początku kodu w języku C
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Dyrektywa #include jest przetwarzana przez preprocesor i dołącza plik nagłówkowy (tu: <stdio.h>). Dzięki temu w kodzie są dostępne deklaracje funkcji i typów z biblioteki standardowego wejścia/wyjścia, np. dla printf. Nie jest to komentarz ani definicja biblioteki.

Pełne wyjaśnienie:

Wyrażenie #include <stdio.h> to dyrektywa preprocesora w języku C. Oznacza polecenie: "przed kompilacją dołącz zawartość wskazanego pliku nagłówkowego". Plik stdio.h jest nagłówkiem standardowej biblioteki wejścia/wyjścia i zawiera m.in. deklaracje funkcji (oraz typów i makr), dzięki którym kompilator "wie", jakich argumentów oczekują funkcje i jaki typ zwracają.

Dlatego poprawna odpowiedź brzmi, że dyrektywa umożliwia wykorzystanie funkcji zdefiniowanych w bibliotece stdio. W praktyce: gdy używasz np. printf lub scanf, dołączenie <stdio.h> dostarcza ich deklaracje i pozwala uniknąć błędów/ostrzeżeń kompilatora.

  • "jest komentarzem do kodu ignorowanym przez kompilator" – błędne, bo komentarze w C mają postać // lub /* ... */. #include nie jest komentarzem i ma znaczenie dla procesu budowania programu.
  • "oznacza, że kod poniżej wyrażenia jest definicją biblioteki stdio" – błędne, bo dołączenie nagłówka nie oznacza, że dalszy kod jest implementacją biblioteki. Nagłówek udostępnia interfejs (deklaracje), a implementacja biblioteki jest dostarczana osobno i zwykle jest linkowana.
  • "bezwzględnie wymaga użycia funkcji zdefiniowanych w bibliotece stdio" – błędne, bo samo dołączenie nagłówka niczego nie "wymusza". Można dołączyć <stdio.h> i nie wywołać żadnej funkcji z tej biblioteki; to jedynie udostępnienie deklaracji, gdy będą potrzebne.

Wskazówka egzaminacyjna: rozróżniaj deklarację (informacja dla kompilatora w nagłówku) od definicji (implementacja funkcji) oraz pamiętaj, że #include działa na etapie preprocesingu, a nie w czasie działania programu.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To polecenie dla preprocesora, aby przed kompilacją dołączyć wskazany plik nagłówkowy do kodu źródłowego. Dzięki temu kompilator widzi deklaracje funkcji, typów i makr z danego nagłówka.
<stdio.h> udostępnia interfejs standardowego wejścia/wyjścia: deklaracje funkcji (np. drukowanie i wczytywanie), typy oraz makra. Bez niego wywołania takich funkcji mogą powodować ostrzeżenia lub błędy kompilacji.
Komentarze mają składnię // albo /* ... */ i są ignorowane. #include ma własną składnię dyrektyw i realnie wpływa na kod przekazywany do kompilatora, więc nie może być traktowane jak komentarz.
W wielu kompilatorach pojawi się ostrzeżenie lub błąd o braku deklaracji funkcji (np. "implicit declaration"). Program może się nie skompilować lub skompiluje się niepoprawnie. Poprawnym rozwiązaniem jest dołączenie <stdio.h>.
Deklaracja mówi kompilatorowi, że funkcja istnieje i jaki ma prototyp (typy argumentów, typ zwracany). Definicja zawiera ciało funkcji, czyli implementację. Nagłówki zwykle zawierają deklaracje, a implementacja jest w plikach .c lub bibliotekach.
#include "wkleja" do kodu treść nagłówka (interfejs), a nie całą bibliotekę w sensie implementacji. Kod biblioteki jest zwykle dostarczany osobno i dołączany na etapie linkowania. To częsty błąd interpretacyjny na egzaminach.
Zapis #include <...> typowo oznacza nagłówki standardowe lub systemowe wyszukiwane w ścieżkach kompilatora. Zapis #include "..." częściej dotyczy nagłówków projektu. Dokładne reguły zależą od kompilatora i konfiguracji ścieżek.
Preprocesor działa przed właściwą kompilacją: rozwija dyrektywy typu #include, #define i warunkową kompilację. Wynikiem jest "przetworzony" kod źródłowy, dopiero potem analizowany i kompilowany do pliku obiektowego.
Nie. Dołączenie nagłówka tylko udostępnia deklaracje, gdyby były potrzebne. Możesz dołączyć <stdio.h> i nie wywołać żadnej funkcji z niego; to nie zmienia logiki programu, a jedynie dostępność symboli podczas kompilacji.
Ucz się etapów: preprocesor → kompilator → linker. Zapamiętaj, że #include dotyczy nagłówków (deklaracje), a biblioteki są dołączane na etapie linkowania. Przećwicz proste programy z i bez nagłówków i analizuj komunikaty kompilatora.
info

Statystycznie 64% uczniów zna prawidłową odpowiedź. średnie

Według specjalistów z branży: "Dyrektywa #include jest przetwarzana przez preprocesor i dołącza plik nagłówkowy (tu: &lt;stdio.h&gt;)."

Źródła:

  • ISO/IEC 9899:2018 (C18), section "Preprocessing directives" – opis dyrektywy #include
  • cppreference.com: "C preprocessor #include directive" https://en.cppreference.com/w/c/preprocessor/include (dostęp: 2026-02-18)
  • cppreference.com: "&lt;stdio.h&gt;" https://en.cppreference.com/w/c/header/stdio (dostęp: 2026-02-18)

Materiały:

  • Dokumentacja języka C (standard lub podręcznik akademicki) – rozdział o preprocesorze i nagłówkach
  • cppreference – hasła: "#include directive", "&lt;stdio.h&gt;"
  • Dokumentacja kompilatora (np. GCC) – opis preprocesora i wyszukiwania plików nagłówkowych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego