Gdzie jest treść funkcji, których deklaracje includujemy, np z nagłówka stdio.h

0

Witam.
Otóż tak czytam w książce Język ANSI C. Programowanie Dennisa Ritchie, że:

Na początku pliku źródłowego znajduje się najczęściej cała grupa wierszy #include, które włączają do programu podstawowe instrukcje #define i deklaracje extern. Mogą również zapewniać dostęp do deklaracji prototypów funkcji bibliotecznych, zapisanych w nagłówkach takich jak <stdio.h> (ściślej: nagłówki nie muszą być plikami; zasady dostępu do nagłówków wyznacza implementacja).

To teraz takie pytanie: Skoro w takim pliku <stdio.h> są same deklaracje funkcji, to gdzie jest ich treść?

0

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include pliki o nazwie plik otwierasz za pomocą notatnika, lub innego programu tekstowego i podglądasz definicje.

0

No tak. W Linuksie /usr/include. Tylko, że według w/w cytatu tam są tylko deklaracje, czyli, że nie ma treści funkcji. No i tak to wygląda. Bo na przykład jak zajrzałem w <stdio.h>, to przykładowo odnośnie funkcji printf tam jest tylko deklaracja, tzn samo to:

/* Write formatted output to stdout.                                                                                                                           
                                                                                                                                                               
   This function is a possible cancellation point and therefore not                                                                                            
   marked with __THROW.  */
extern int printf (__const char *__restrict __format, ...);
1

Żeby zobaczyć definicje musisz pobrać źródła libc.

1

A Microsoft źródeł swojej domyślnej implementacji runtime C (msvcrt) nie udostępnia, ale z dostępnymi symbolami debugującymi przeglądanie ich IDĄ to prawie jak czytanie kodu C.

1 użytkowników online, w tym zalogowanych: 0, gości: 1