/ / L'istruzione "Usi" in Pascal equivale a #include in C ++ o all'importazione in Java - importa, include, pascal, usa

L'istruzione "Usi" in Pascal equivale a #include in C ++ o all'importazione in Java - importa, include, pascal, usa

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 № 1

Tutti 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.