Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




TURBO C++: RISPOSTE A DOMANDE COMUNI

Italiana


TURBO C++: RISPOSTE A DOMANDE COMUNI

TURBO C++: INTRODUZIONE

-------- ----- ------ -------- ----- ------ ----

D. Come si installa Turbo C++?

R. Si esegua il p 22322d322w rogramma INSTALL dal disco INSTALL/HELP. Per

iniziare l'installazione, si cambi l'unit. corrente in quella

che ha il programma di installazione e si digiti INSTALL.



In una casella nella parte inferiore dello schermo verranno

fornite le istruzioni di ogni messaggio di richiesta. Ad

esempio, se si sta eseguendo l'installazione dall'unit. A:,

si digiti:

A:

INSTALL

A questo punto, il programma INSTALL apparir. con le selezioni

e le descrizioni dei menu per guidare attraverso l'operazione

di installazione.

D. Come si esegue Turbo C++?

R. Dopo aver installato Turbo C++, si digiti "TC" sulla riga di

comando del DOS e si sar. pronti a procedere.

D. Qual'S la differenza tra TC.EXE e TCC.EXE?

R. Il pacchetto di Turbo C++ S dotato di due compilatori, un

ambiente di sviluppo chiamato TC.EXE e un compilatore a riga

di comando chiamato TCC.EXE. L'ambiente di sviluppo combina

il compilatore a riga di comando con l'editor integrato, il

linker, il debugger, e altre utili funzionalit. (come i menu

a comparsa e quelli a tendina e la gestione del mouse e cos

via). La versione della riga di comando esegue dalla riga di

comando del DOS. Si rimanda a TURBO C++: GUIDA ALL'USO per

dettagli sull'uso di entrambi i sistemi.

D. Cos'S un file di configurazione?

R. Un file di configurazione indica a Turbo C++ quale opzioni

usare come di norma e dove cercare la sua libreria e i file

header. TC.EXE cerca un file di configurazione chiamato

TCCONFIG.TC, e TCC.EXE cerca un file chiamato TURBOC.CFG.

D. Come si crea un file di configurazione?

R. Quando si esegue il programma INSTALL esso crea un file di

configurazione chiamato TURBOC.CFG per TCC.EXE. Questo file

S un file ASCII che si pu. modificare con qualsiasi editor

di testo e contiene le informazioni di percorso per la libreria

e i file header che TCC.EXE deve usare. Il programma INSTALL

non crea un file TCCONFIG.TC per TC.EXE perch, installa le

informazioni delle directory direttamente in TC.EXE. Si pu.

creare un file di configurazione per TC.EXE eseguendo Turbo

C++, impostando le opzioni dove si vuole, e digitando Alt-O/S.

A m b i e n t e d i s v i l u p p o

-------- ----- ------ -------- ----- ------ ----

D. Perch, Turbo C++ non S in grado di trovare alcun file di

inclusione?

R. Il compilatore ricerca i file di inclusione nel percorso Include

Directories del Turbo C++. Si pu. specificare questo percorso

attraverso il menu Options|Directories. Il programma INSTALL

all'inizio imposta questo percorso nella directory dove ha

copiato tutti i file *.h di Turbo C++.

D. Perch, si riceve il messaggio:

Linker Error: Unable to open input file 'C0x.OBJ'?

R. Il linker ricerca i file di avviamento e di libreria di Turbo

C++ nel percorso Library Directories di Turbo C++. Si pu.

specificare questo percorso attraverso il menu

Options|Directories. Il programma INSTALL inizialmente imposta

questo percorso nella directory dove ha copiato i file di

avviamento e di libreria.

D. Com'S possibile far collegare a Turbo C++ le librerie o usare

file sorgente multipli?

R. L'installazione del progetto di Turbo C++ S progettata in modo

da lavorare con file multipli.

D. Perch, il linker continua ad indicare che tutte le routine di

libreria grafica non sono definite?

R. La voce di Options|Linker|Graphics Library deve essere

impostata a ON, se si sta usando qualsiasi funzione grafica

di Turbo C++ e non si S specificato GRAPHICS.LIB in un file

progetto.

D. Perch, Turbo C++ segnala "Unable to open include file 'stdarg.h'"

quando si cerca di includere <stdio.h>?

R. La ragione pi- probabile S che si S superato il numero di file

che il DOS pu. aver aperto simultaneamente. Si aggiunga la riga

FILES=20

al file CONFIG.SYS del DOS. Questa consente al DOS di aprire

fino a 20 file allo stesso tempo. CONFIG.SYS sar. effettivo solo

dopo aver ricaricato il computer. Si veda IBM DOS Reference

Manual per i dettagli sul file CONFIG.SYS.

D. Come si cambiano i colori dell'editor e i menu in TC?

R. Il programma di servizio TCINST.EXE consente di configurare

i colori.

D. Come si pu. inviare un listato del codice sorgente alla stampante?

R. All'interno dell'editor di Turbo C++ si prema Ctrl-K-P. Questo

consentir. di stampare un blocco marcato sulla stampante. Se

nessun blocco S marcato, questa sequenza di tasti stamper.

l'intero file nell'editor.

D. Quando si effettua il make, si esegue o si traccia un

programma, a volte Turbo C++ compila o esegue il linking

anche quando i file oggetto sono aggiornati.

R. Il make logico di Turbo C++ funziona soltanto in base all'ora

e alla data del file. Se uno dei file sorgente S marcato

con una data futura, i file oggetto che esso crea saranno

sempre pi- vecchi del file sorgente, e Turbo C++ cercher.

sempre di ricostruire il file. Si pu. fissare la data e l'ora

usando TOUCH.COM per impostare il file alla data e all'ora

corrente. Si dovrebbe anche accertarsi che la data e l'ora

del sistema siano sempre impostate correttamente. TOUCH.COM

S documentato nel file UTIL.DOC.

D. Come mai i vecchi file progetto di Turbo C++ non funzionano

pi-?

R. I file progetto ora contengono molte pi- informazioni su un

progetto, ed ormai non sono pi- memorizzati in formato ASCII.

Per creare un file progetto, si selezioni PROJECT dal menu

principale, e si seguano i menu. Per convertire i vecchi file

progetto nel nuovo formato, si pu. usare il file del

programma di servizio PRJCNVT.EXE (documentato in

UTIL.DOC).

D. Come si possono convertire i file di progetto di Turbo C 2.0

nel nuovo formato?

R. Esiste un programma di servizio di conversione nella directory

BIN di Turbo C++ chiamato PRJCNVT.EXE. Questo programma

eseguir. la conversione.

D. Come mai il file progetto viene caricato automaticamente

quando si avvia TC? Si desidera lavorare su un programma

diverso.

R. Se esiste un solo file progetto nella directory corrente,

Turbo C++ caricher. e user. quel file. Se non esistono dei

file progetto, o se esistono pi- file progetto, Turbo C++

non ne carica uno automaticamente.

D. Il pulsante destro del mouse sembra non svolgere alcuna

azione. Si pu. modificarlo in modo che imposti i punti di

arresto?

R. S, sotto il menu di Options|Environment|Mouse vi S una

finestra di dialogo per il pulsante destro del mouse. Si pu.

modificarlo affinch, imposti i punti di arresto, o faccia

molte altre cose.

D. Com'S possibile far usare a Turbo C++ memoria estesa o

espansa?

R. Quando si chiama Turbo C++, si usi l'opzione /X per la memoria

estesa ed /E per quella espansa.

D. Come si pu. scoprire dove si sta verificando l'assegnamento

del puntatore nullo segnalato dal messaggio "Null pointer

assignment"?

R. Si pu. impostare un punto di osservazione sull'espressione

seguente:

*(char *)0,4m

(char *)4

Si pu. eseguire passo a passo il programma. Quando cambiano i

valori, la riga appena eseguita S quella che sta provocando

il problema.

D. Quando si compila il programma, si riceve il seguente

messaggio di errore:

Error: C:\TC\INCLUDE\STDIO.H: Overlays only supported in

medium, large, and huge memory models

Cosa sta succedendo?

R. L'opzione Overlay Support S stata selezionata e non funziona

nei modelli di memoria tiny, small, o medium.

Questa opzione pu. essere disattivata con:

Options|Compiler|Code Generation|Overlay Support

D. Quando si cerca di caricare un nuovo file dopo aver redatto

un file, il primo file resta sullo schermo. Come si chiude

il primo file?

R. Si usi Alt-F3 per chiudere il file corrente. Inoltre, si pu.

usare F6 per spostarsi da un file a quello successivo, se ve

ne S pi- di uno aperto alla volta.

D. Si sta svolgendo l'operazione di ricerca e di sostituzione,

e l'editor chiede conferma per ogni sostituzione. Pur avendo

selezionato "Change All", la richiesta di conferma viene

presentata. Perch,?.

R. Per disattivare la richiesta, non si deve selezionare

l'opzione "Prompt on replace" a sinistra della finestra di

dialogo.

D. Quando si cerca di usare uno qualsiasi dei pseudo registri,

come _AX, compare il messaggio di errore "Undefined symbol

'_AX' in function..." quando si compila. Perch,?

R. Si possono usare i pseudo registri solo in Turbo C++ e nelle

modalit. ANSI del compilatore. Si pu. cambiare questa

impostazione nel menu Options|Compiler|Source.

D. Poich, non si dispone di un mouse, si possono ancora copiare

i blocchi di codice da un file all'altro?

R. S. Si pu. marcare l'inizio e la fine di un blocco spostandosi

in un'area appropriata e premendo Ctrl-K-B (inizio blocco) e

Ctrl-K-K (fine blocco). Quindi si possono usare i comandi di

copia e incolla del menu Edit.

I l c o m p i l a t o r e a a r i g a d i c o m a n d o

-------- ----- ------ -------- ----- ------ ----

D. Perch, Turbo C++ non S in grado di trovare nessun file di

inclusione?

R. Il compilatore ricerca i file di inclusione nel percorso

Include Directories di Turbo C++. Si deve specificare questo

percorso con l'opzione -I. Il programma INSTALL inizialmente

scrive un file di configurazione (TURBOC.CFG) che imposta

questo percorso nella directory dove ha copiato tutti i file

*.h di Turbo C++.

D. Perch, si riceve il messaggio:

Linker Error: Unable to open input file 'C0x.OBJ'?

R. Il linker ricerca i file di avviamento e di libreria di Turbo

C++ nel percorso Library Directories di Turbo C++. Si pu.

specificare questo percorso con l'opzione -L. Se si consente

a TCC di chiamare il linker, questi ricercher. i file nelle

directory indicate nel file di configurazione (TURBOC.CFG)

scritto dal programma INSTALL. Se si esegue TLINK, il file

di configurazione non viene letto.

D. Perch, il linker indica che tutte le routine di libreria

grafica non sono definite?

R. TCC non ricercher. la libreria grafica fino a quando non gli

viene detto. Si dovrebbero specificare la libreria grafica

sulla riga di comando. Ad esempio, per compilare BGIDEMO, si

digiti

TCC BGIDEMO.C GRAPHICS.LIB

I n p u t / o u t p u t g e n e r a l e

-------- ----- ------ -------- ----- ------ ----

D. La '\n' in cprintf() non riporta il cursore all'inizio della

riga. Sposta solo il cursore in gi- di una riga. Una cprintf()

interpreta '\n' come un Line Feed (salto riga). Per forzare

il cursore all'inizio della riga, si inserisca manualmente

un Carriage Return (ritorno a capo):

cprintf("\n\r");

D. Come si stampa sulla stampante da un programma di Turbo C++?

R. Turbo C++ usa un puntatore FILE (stdprn) definito nel file

STDIO.H. Non occorre aprire stdprn prima di usarlo:

#include <stdio.h>

int main(void)

Si noti che la stampante stampa per righe, l'output affluisce

solo dopo aver inviato una '\n'.

D. Si stanno leggendo e scrivendo dei file binari. Il programma

sta traducendo i caratteri Carriage Return (0x0D) e Line Feed

(0x0A). Come S possibile evitare che questo avvenga?

R. I file aperti nella modalit. di testo tradurranno questi

caratteri per il DOS. Per leggere un file in modo binario, lo

si apra in modo binario.

Ad esempio,

#include <stdio.h>

int main(void)

La modalit. di file predefinita S testo.

D. PerchS printf() e puts() non stampano il testo a colori?

R. Si usino le funzioni di input/output della consolle cprintf()

e cputs() per l'output a colori.

#include <conio.h>

int main(void)

D. Come si stampa un intero long?

R. Si usi il formato "%ld":

long int l = 70000L;

printf("%ld", l);

D. Come si stampa un long double?

R. Si usi il formato "%Lf".

long double ldbl = 1E500;

printf("%Lf", ldbl);

P r o g r a m m i d i e s e m p i o

-------- ----- ------ -------- ----- ------ ----

D. Come si compila il programma BGIDEMO?

R. 1. Ci si assicuri che i seguenti file di Turbo C++ si trovino

nella directory corrente:

BGIDEMO.C

*.BGI

*.CHR

2. Si esegua Turbo C++.

3. Si carichi BGIDEMO.C nell'Editor premendo F3, quindi

digitando BGIDEMO<Enter>.

4. Si vada al menu Run e si selezioni la voce Run.

D. Come si crea un file .COM?

R. Le versioni del DOS 3.2 e pi- recenti includono un programma

di servizio EXE2BIN che converte i file .EXE in file .COM. Gli

utenti che non hanno EXE2BIN possono usare TLINK, il linker

della riga di comando di Turbo C++, per creare un file .COM

invece di un file .EXE. Si usi l'opzione /t. Ad esempio:

tcc -mt -lt tiny

creer. TINY.COM invece di TINY.EXE.

Esistono alcune limitazioni nella conversione di un file .EXE

in un file .COM. Queste limitazioni sono documentate nel

manuale IBM Disk Operating System sotto EXE2BIN.

Il modello TINY di Turbo C++ S compatibile con il formato .COM,

ma i programmi che usano le routine a virgola mobile di Turbo

C++ non possono essere convertiti in un file .COM.

G r a f i c a

-------- ----- ------ -------- ----- ------ ----

D. PerchS si ottiene il messaggio di errore:

BGI Error: graphics not initialized (use 'initgraph')

quando si usa una funzione grafica? Il programma ha gi.

chiamato initgraph().

R. Per alcuni motivi la chiamata a initgraph() non S andata

a buon fine. Per scoprire il perch,, si controlli il valore

restituito di graphresult(). Ad esempio:

#include <graphics.h>

int main(void)

:

}

M a t e m a t i c a / V i r g o l a m o b i l e

-------- ----- ------ -------- ----- ------ ----

D. PerchS si ottengono dei risultati non corretti da tutte le

funzioni di libreria matematica come cos(), tan() e atof()?

R. Si deve includere <math.h> prima di chiamare qualsiasi

funzione matematica standard di Turbo C++. In generale, Turbo

C++ presuppone che una funzione che non S dichiarata

restituisca un int. Nel caso di funzioni matematiche, di

solito queste ritornano un double. Ad esempio

/* SBAGLIATO */ /* GIUSTO */

#include <math.h>

int main(void) int main(void)

}

D. Come si "intrappola" un errore in virgola mobile?

R. Si vedano le funzioni signal() e matherr() nel manuale TURBO

Turbo C++: FUNZIONI DI LIBRERIA. La funzione signal() pu.

essere usata per intrappolare gli errori nell'80x87 o

nell'emulatore dell'80x87. La funzione matherr() intrappola

gli errori nelle funzioni di Math Library.

E r r o r i d e l L i n k e r

-------- ----- ------ -------- ----- ------ ----

D. Perch, si ottiene il messaggio:

Linker Error: Unable to open input file 'C0x.OBJ'

R. Si veda sopra la sezione "Ambiente di sviluppo".

D. Perch, si ottiene il messaggio:

Linker Error: Undefined symbol '_main' in module C0

R. Ogni programma in C deve contenere una funzione chiamata

main(). Questa S la prima funzione ad essere eseguita nel

programma. Il nome della funzione deve essere scritto in

lettere minuscole. Se il programma non ne ha uno, lo si crei.

Se si stanno usando dei file sorgente multipli, il file che

contiene la funzione main() deve essere uno dei file elencati

nel progetto.

Si noti che un carattere di sottolineatura '_' S messo prima

di tutti i simboli esterni di Turbo C++.

D. Perch, il linker indica che tutte le routine di libreria

grafica non sono definite?

R. Si vedano sopra le sezioni "Ambiente di sviluppo" e

"Compilatore a riga di comando".

D. Cos'S un 'Fixup overflow'?

R. Si veda il listato dei messaggi di errore di TLINK in

TURBO C++: GUIDA ALL'USO.

D. Si stanno collegando le funzioni del linguaggio assembly con

Turbo C++. Il linker indica che tutte le funzioni non sono

definite.

R. Ci si accerti di aver messo un carattere di sottolineatura

'_' davanti a tutti i nomi di funzioni del linguaggio

assembly che devono essere chiamate da Turbo C++. Il

programma in linguaggio assembly dovrebbe essere assemblato

con la direttiva di distinzione tra maiuscole e minuscole.

A l t r e d o m a n d e

-------- ----- ------ -------- ----- ------ ----

D. Come si cambia la dimensione dello stack?

R. La dimensione dello stack di un programma in Turbo C++ S

determinata nel momento dell'esecuzione dalla variabile

globale _stklen. Per cambiare la dimensione a, per esempio,

10.000 byte, si includa la riga seguente nel programma:

extern unsigned _stklen = 10000;

Questa istruzione non deve essere all'interno di nessuna

definizione di funzione. La dimensione predefinita dello

stack S 4.096 byte (4K).

D. Quando si esegue il programma si ottiene un messaggio:

'Stack Overflow!'. Come S possibile risolvere questo problema?

R. Si pu. aumentare la dimensione dello stack seguendo la

procedura sopra. Gli overflow dello stack di solito sono

causati da un gran numero di dati locali o di funzioni

ricorsive. Si pu. diminuire la quantit. di spazio dello stack

usato dichiarando le variabili locali statiche:

int main(void) int main(void)

}

Certamente occorre stare attenti poich, vi sono altri effetti

che la parola riservata "static" ha, come richiesto in questo

caso. Si veda TURBO C++: GUIDA ALLA PROGRAMMAZIONE.

D. Dopo aver terminato l'esecuzione il programma appare

il messaggio 'Null pointer assignment'. Cosa significa?

R. Prima che un programma di Turbo C++ del modello di dati

piccoli ritorni al DOS, controller. se l'inizio del suo

segmento di dati S stato danneggiato. Questo messaggio

avverte che si sono usati dei puntatori non inizializzati

o che il programma ha danneggiato la memoria in qualche altro

modo.

D. Perch, i file .EXE generati da TC.EXE sono pi- grandi di

quelli generati da TCC.EXE?

R. Nella configurazione standard, TC.EXE comprende le

informazioni di debugging nei file .EXE che crea, mentre

TCC.EXE no. Se non si vogliono generare queste informazioini

di debugging, S possibile chiuderle nell'ambiente di

sviluppo selezionando Alt-D|S|N.

D. Perch, si ottengono dei messaggi di "declaration syntax error"

su DOS.H?

R. Si S impostata l'opzione "Ansi keywords only" su ON. Questa

opzione deve essere impostata su OFF quando si usa una

qualsiasi parola riservata specifica di Turbo C++. Per una

lista delle parole riservate, si veda TURBO C++: GUIDA ALLA

PROGRAMMAZIONE.

D. Si dispone di un programma di lavoro che che alloca memoria in

modo dinamico usando malloc() o calloc() in modelli di dati

piccoli (tiny, small, e medium). Quando si compila questo

programma in modelli di dati grandi (compact, large, e huge),

il programma si blocca.

R. Ci si accerti di avere incluso <alloc.h> nel programma.

D. Si stanno collegando le funzioni del linguaggio assembly con

Turbo C++, ma il linker indica che tutte le funzioni non sono

definite.

R. Si veda la risposta data in precedenza nella sezione "Linker".

D. I puntatori far "si avvolgono" quando vengono incrementati

oltre i 64K. Come si indica un oggetto dati che S maggiore di

64K?

R. Si usino i puntatori huge.

D. Come si interfacciano le routine di Turbo C++ con un programma

in Turbo Pascal?

R. Si vedano i programmi di esempio CPASDEMO.PAS e CPASDEMO.C

su disco. Questi file sono compattati nel file EXAMPLES.ARC.

Occorrer. scompattarli prima di usarli.

D. Come S possibile far collegare Clipper a Turbo C++?

R. Se si hanno dei problemi, si contatti il reparto di assistenza

tecnica della Nuntucket.

D o m a n d e c o m u n i s u l C + +

-------- ----- ------ ----- ----- ---------------

D. Quali problemi potenziali possono sorgere dalla conversione di

tipo di un puntatore di classe base in un puntatore di classe

derivato in modo da poter chiamare le funzioni membro della

classe derivata?

R. Sintatticamente questo S permesso. Esiste sempre la

possibilit. che un puntatore base punti veramente ad una

classe base. Se viene convertito in un tipo derivato, il

metodo che si chiamer. pu. non esistere nella classe base.

Perci., si sar. sul punto di usare l'indirizzo di una

funzione che non esiste.

D: Qual'S la differenza tra le parole riservate STRUCT e CLASS?

R: I membri di STRUCT sono PUBLIC di norma, mentre in

CLASS, sono predefiniti a PRIVATE. Essi sono comunque

equivalenti.

D: Si S dichiarata una classe derivata da una classe base, ma

non si pu. accedere a nessuno dei membri di classe base con

la funzione di classe derivata.

R: Le classi derivate NON accedono ai membri private di una

classe base. Al fine di accedere ai membri di una classe base,

i membri della classe base devono essere dichiarati o come

public, o come protected. Se sono public, allora ogni parte

del programma pu. accedervi. Se sono protected, sono

accessibili dai membri della classe, dai friend, e da

qualsiasi classe derivata.

D: Come si pu. usare il Paradox Engine con C++?,

R: Poich, le funzioni di Paradox Engine sono tutte compilate

come le funzioni in C, ci si dovr. assicurare che i nomi delle

funzioni non vengano modificate dal compilatore del C++.

Per fare questo occorre dichiarare il prototipo delle funzioni

Engine come extern. Nel file header pxengine.h si

inserisca il seguente codice nelle righe indicate.

/* inserito alla riga # 268 */

#ifdef __cplusplus

extern "C"

#endif

D: Si dispone di una classe che S derivata da tre classi base.

Si pu. assicurare che un costruttore di classi base verr.

chiamato prima di tutti gli altri costruttori?

R: Se si dichiara la classe base come una classe base virtuale,

il suo costruttore verr. chiamato prima di qualsiasi

costruttore di classe base non virtuale. Altrimenti i

costruttori vengono chiamati nell'ordine da sinistra a destra

sulla riga di dichiarazione della classe.

D: Le funzioni di input/output della libreria standard sono

ancora disponibili per l'uso con la libreria iostreams del

C++?

R: S, usando

#include <stdio.h>

le funzioni come printf() e scanf() continueranno ad essere

disponibili.

D: Mentre si esegue il programma in Turbo Debugger, si nota che

nessuna delle funzioni inline S espansa. Al contrario, esse

sono tutte eseguite come chiamate di funzioni.

R: Ogni volta che si compila il programma con le informazioni di

debugging incluse, nessuna funzione viene espansa inline. Per

verificare che le funzioni inline sia davvero espanse, si

compili un modulo con il flag -S del compilatore della riga

di comando, quindi si esamini il file .asm che viene generato.

D. In C++, date due variabili dello stesso nome, una locale e una

globale, come si accede all'istanza globale all'interno del

campo di validit. locale?

R. Si usi l'operatore (::) di risoluzione del campo di validit..

int x = 10;

for(int x=0; x < ::x; x++)

D. Le seguenti due funzioni saranno sovraccariche (overloaded)

dal compilatore, o il compilatore le indicher. come un errore?

PerchS?

void test ( int x, double y); & int test( int a,

double b);

R. Il compilatore indicher. questo come un errore di

ridichiarazione poich, n, tipi di ritorno n, nomi di argomento

vengono considerati quando si determinano delle signature

uniche per le funzioni di sovraccarico (overloading).

Vengono considerati solo numero e tipo di argomento.

D. Se si passa un carattere ad una funzione che accetta solo un

int, cosa far. il compilatore? Lo indicher. come un errore?

R. No. Il compilatore promuover. char a int e user. la

rappresentazione dell'intero nella funzione invece del

carattere stesso.

D. Si stava cercando di allocare un array di puntatori a

funzioni usando il nuovo operatore ma si continua ad ottenere

la dichiarazione di errori di sintassi usando la seguente

sintassi: new int(*[10])(); Cosa c'S di sbagliato?

R. Il nuovo operatore S un operatore unario e attacca prima la

parola riservata int generando quanto segue: (new int)

(*[10])();

Occorre racchiudere tra parentesi l'espressione per generare

i risultati attesi: new (int (*[10]());

D. Cosa sono le funzioni inline? Quali sono i loro vantaggi? Come

vengono dichiarate?

R. Una funzione inline S una funzione che viene inserita

testualmente dal compilatore, molto simile alle macro.

Il vantaggio S che il tempo di esecuzione viene abbreviato

poich, l'overhead del linker viene minimizzato. Esse sono

dichiarate usando la parola riservata inline quando la

funzione viene dichiarata:

inline void func(void)

o includendo la dichiarazione di funzione e il corpo del

codice all'interno di una classe:

class test

};

D. Se non si specificano le sezioni o public o private in una

classe, quale viene usato?

R. Una classe indicher. come di norma tutti i membri private

se le sezioni non vengono dichiarate n, public n, private.

D. Cosa fa il modificatore _seg?

R. L'uso di _seg fa s che un puntatore diventi un luogo di

memoria per il valore di un segmento, piuttosto che un offset

( o un segmento/offset ). Per sempio, se "int _seg *x"

contiene il valore 0x40, allora quando si usa "*x", il valore

a cui si punta sar. nel segmento 0x40, offset 0. Se si

aggiunge un valore al puntatore, il valore viene moltiplicato

per la dimensione del tipo di puntatore. Quel nuovo valore

viene usato come un offset, e viene combinato al valore del

segmento contenuto nel puntatore. Ad esempio,

int _seg *x;

int value;

x = (int _seg *)0x40;

value = *(x + 20);

a value S assegnato il valore dell'intero in 0x40:0x28 (Si

ricordi, 20 * sizeof(int) = 40 = 0x28).

D. Si pu. allocare in modo statico pi- di 64K di dati in un

singolo modulo?

R. S. I dati far vengono ora gestiti:

...

char far array1[60000L];

char far array2[60000L];

...

Per array pi- grandi di 64k si usi:

char huge array3[100000L];

D. PerchS compare l'errore "Type name expected" quando si

definisce una classe friend in una nuova classe?

R. Occorre far sapere al compilatore che l'etichetta che si usa

per la classe friend S un'altra classe. Se non si vuole

definire l'intera classe, si pu. semplicemente avere

"class xxx", dove xxx S l'etichetta.

D: Come si possono stampare i valori esadecimali in maiuscole

usando le librerie iostream?

R: Occorre impostare lo stato dello stream usando setf(). Ad

esempio,

#include <iostream.h>

int main(void)

D. Cos'S il puntatore "this"?

R. "this" S una variabile locale nel corpo di una funzione

membro non statica. Esso S un puntatore all'oggetto per il

quale la funzione S stata chiamata. Non pu. essere usato al

di fuori di un corpo di funzione membro di classe.

D. Perch, una funzione membro binaria accetta solo un singolo

argomento?

R. Il primo argomento S definito implicitamente.

D. Cos'S una funzione membro friend?

R. Dichiarando un friend i non membri di una classe possono

accedere ai membri non public di una classe.


Document Info


Accesari: 3175
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright Contact (SCRIGROUP Int. 2024 )