È possibile eseguire un programma in linguaggio C senza librerie?

1

Stavo lavorando su un programma C e ho appena notato che posso eseguire il mio programma anche se non ho dichiarato le librerie richieste, questo è il codice:

#include <stdio.h>
#include <string.h>

int main(){

  char x[999],y[999]="copyme";
  strcpy(x,y);
  printf("Output: %s",x); 

  return 0;
}

Dopo aver non dichiarato il string.h libray, il programma può sempre essere eseguito e produrre il risultato. Come so, qualsiasi funzione utilizzata ha bisogno di una libray che specifichi il suo lavoro, logicamente, poiché non c'è string.h la funzione strcpy non deve funzionare, quindi, non ci deve essere output.

Supponevo che l'altra libreria ( stdio.h ) agisse come un vizio, ma dopo averlo dichiarato non dichiarato, il programma può essere eseguito e produrre l'output anche se non è stata dichiarata alcuna libreria. come può accadere ?, Le biblioteche non hanno ruolo?.

    
posta Mehdi 16.06.2016 - 16:46
fonte

1 risposta

5

In primo luogo, "librerie" e "intestazioni" sono cose diverse. Un file di intestazione può essere dichiarazioni per tutte le cose in una libreria, alcune cose in una libreria o semplicemente dichiarazioni per alcune / tutte le cose in un'altra unità di compilazione.

In secondo luogo, C supporrà allegramente che una funzione non dichiarata assuma solo i parametri interi e restituisca un numero intero. Questo è abbastanza abbastanza per strcpy (l'int nuda di default può essere sufficiente per un puntatore e la coercizione pointer-to-int è, credo, definita dall'implementazione) e se funziona per strcpy funzionerà per quello che fai con printf .

In genere, sia strcpy che printf vivono nella libreria C standard, che verrà (normalmente) automaticamente inclusa nella fase di collegamento, in cui la presenza dei simboli non collegati causerà il collegamento pertinente.

    
risposta data 16.06.2016 - 17:27
fonte

Leggi altre domande sui tag