La necessità di file di intestazione quando si includono le librerie?

0

Durante la compilazione di un'applicazione che dipende da una libreria, dobbiamo specificare l'inclusione della libreria e anche il file di intestazione.

Poiché il binario della libreria contiene i nomi effettivi delle funzioni, i nomi delle funzioni non potrebbero essere forniti solo dal binario?

    
posta TheMeaningfulEngineer 28.09.2014 - 00:53
fonte

2 risposte

2

Le librerie vengono specificate durante il collegamento, piuttosto che la compilazione, e quindi non forniscono nomi di funzioni durante la compilazione. Inoltre, i file oggetto della libreria potrebbero non disporre di tutte le informazioni necessarie per la fase di compilazione (come il numero e il tipo di argomenti), a seconda delle funzionalità disponibili nel formato oggetto e delle funzioni utilizzate dal compilatore durante la produzione della libreria file.

    
risposta data 28.09.2014 - 01:32
fonte
1

È del tutto possibile utilizzare le librerie senza usare le intestazioni. Ecco un esempio che utilizza solo la libreria C:

int puts(const char *);

int main()
{
    puts("Hello, World!");
}

Il vantaggio dei file di intestazione è quello di fornire le firme della funzione e i corpi strutturali per te. Nel caso della stessa libreria C standard, lo standard vieta espressamente di dichiarare qualsiasi firma di funzione se coinvolge qualsiasi tipo definito dalla libreria (un esempio reale è qualsiasi cosa che utilizza 'off_t', che di solito esiste in una versione a 32 bit e una versione a 64 bit e usa alcune magie specifiche del compilatore per rinominare il simbolo)

    
risposta data 28.09.2014 - 03:17
fonte

Leggi altre domande sui tag