Da quello che so, nelle applicazioni C ++, se includi un file di intestazione, i contenuti del file di intestazione vengono incollati nel codice.
D'altra parte, in Java - quando si importa una libreria java - i parametri vengono passati alla libreria nella JVM (spero di avere ragione su questo).
Quello che voglio sapere è qual è il comportamento della clausola uses nei programmi Pascal.
risposte:
4 per risposta № 1Tutti e tre hanno a che fare con come costruire un programma da più file sorgente.
C / C ++ ha il livello di fondo, tutte le dichiarazioni richieste che il compilatore deve essere incluso e compilato di nuovo per ogni sorgente (.c, .cpp) come se fosse una grande fonte.
Anche Pascal supporta questo (ha $ INCLUDEdirettiva), ma è molto meno utilizzato (e anche più nella programmazione di sistema, e quasi mai nella programmazione delle applicazioni). Usando questo eredita tutti i problemi che ha C / C ++, ma poiché l'uso è di magnitudo inferiore, questo è meno visibile.
Questo perché con il sistema di usi / unità Pascalha un sistema migliore che può importare altri pezzi in modo sicuro e automatico senza ricompilarli. È anche possibile integrare le funzioni senza dichiararle nell'intestazione.
Java praticamente fa lo stesso in linea di principio, mala sua implementazione è totalmente diversa (basata su spazi dei nomi nidificati gerarchici anziché spazi dei nomi che sono sempre nella forma unitname.identifiername [.fieldnames] come Pascal)
Sia Java che Pascal guadagnano però che ilil compilatore può compilare un programma passando solo il file principale e un mucchio di percorsi. Il compilatore farà la ricerca stessa cosa compilare e cosa no. Permette anche a loro di costruire automaticamente una linea di linker dai pezzi di origine trovati.
Ciò rende necessaria la creazione di sistemi builds esterni complessi (come make) e il mantenimento manuale dell'amministrazione (makefile) di questo per il moot basico dell'edificio.
Quindi, in sintesi, sono tutti pressappoco uguali (interazioni tra più file sorgente), ma i sistemi Pascal e Java si basano su quello per facilità d'uso e per dare più controllo al compilatore
Aggiunto in seguito: Il principio fondamentale dei sistemi modulari è quello dicollegamento fisico un'intestazione per ogni file di codice principale (che è solo collegato per convenzione in C) e per apportare modifiche al preprocessore locale solo a quel file (e $ INCLUDE "d, ma non USI" d / file importati. lo stato del preprocessore all'inizio di un modulo dipende solo dallo stato di avvio del compilatore (leggi: compilatore interno e riga di comando / ambiente). Ciò significa che non è possibile importare le macro tramite USES, poiché sono lo stato del preprocessore.