mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c++
Titolo: Ordine opzioni g++

Tento, senza successo, di compilare con il comando:
 $ g++ GARCH.CPP -Wno-deprecated -L. -lnewmat -lm
ottenendo un po' di undefined reference.
 Volevo sapere se l'ordine dei parametri [GARCH.CPP -Wno-deprecated -L.
-lnewmat -lm] conta o no.
8-)
G.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 -lnewmat -lm] conta o no.
Ciao,
La risposta è si nel caso specifico. Cioè l'ordine in cui le librerie sono
elencate decide l'ordine in cui il link con le stesse sarà effettuato. A
parte questa e altre poche attenzioni che bisogna porre nello scrivere i
parametri in ordine, per il resto l'ordine delle opzioni (le chiamiamo così
per distingure dai parametri necessari alla corretta "compiling & linking")
non ha nessuna importanza. Cioè "-Wno-deprecated" lo puoi inserire dove
vuoi.
In sintesi libnewmat sarà collegata prima di libm.
A parte quanto detto sopra, sei sicuro che quelle due librerie si trovano
nella (1)directory corrente, oppure (2) nelle locazioni standard del
sistema, oppure (3) elencate in "/etc/ld.so.conf"? Se così non fosse devi
almeno scrivere il path intero dopo "-L".
Saluti,
fabio de francesco
(fabiomdf)
Il link
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c++
Titolo: Urge:Errore exception unknown:0x80000003 nell'applicazione

Ciao a tutti,
Sto usando win 2000 sp4,l'applicazione è sviluppata in VC++ . Succede che
almeno una volta al giorno ho un crash dell'applicazione che mi segnala:
si è verificato l'errore di exception unknown softare exception (0x80000003)
nell'applicazione 0x10212b40
Fare click su Ok per terminare l'operazione
Fare click su Annulla per il debud dell'applicazione
Faceno click su Annulla finisco in uno dei thread che è ancora vivo ma non
mi aiuta a capire dov'è il problema.
Qualcuno ha qualche idea su questo tipo di errore,oppure come posso
intercettare questo
genere di messaggi windows e in caso fare il kill del processo e riavviarla
in automatico ?
Grazie anticipatamente dell'aiuto che spero mi possiate dare
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 in automatico ?
Mi pare una pessima idea.
Ciao,
Nicola

 ha
scritto:

Sono d'accordo con te che la seconda idea è pessima ma visto che
l'applicazione che da questo errore è installata all'estero e non riesco a
simularla , a volte bisogna trovare dei compromessi,quindi cercavo qualcuno
che mi potesse dare delle idee . Comunque grazie se ti viene in mente
qualcos'altro riguardo l'intercettazione dei messaggi fammi sapere


nell'applicazione 0x10212b40
Quel tipo di exception appare quando il programma ha raggiunto un
breakpoint. In pratica: la tua applicazione e' compilata per il
debug e hai lasciato dentro dei breakpoint, oppure il codice
viene sporcato da un possibile buffer overflow.
Newsgroup: it.comp.lang.c++
Titolo: std::string

Cosa c'e' di sbagliato in questo codice ?
Il programma termina con "Questo programma ha eseguito una
opera.......ecct,ecct" .
Per farlo funzionare correttamente e' sufficiente eliminare la
variabile globale gt2 oppure definire dei parametri per i costruttori.
La prova e' stata fatta   il Borland C++ Builder 3.
#include <tchar.h>
#include <string>
#pragma hdrstop
#include <condefs.h>
 std::string gt,gt2 ;
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, TCHAR **argv)
{
 return 0;
}

 Cosa c'e' di sbagliato in questo codice ?
Inizia col togliere tutto cio che non e` C++ standard e poi, se muore 
ancora, ne riparliamo, ok? :-)
 > Per farlo funzionare correttamente e' sufficiente eliminare la
 > variabile globale gt2 oppure definire dei parametri per i costruttori.
Mi sa che non serve a farlo funzionare correttamente, quanto ad evitare 
che muoia subito. Una cosa non e` corretta solo perche` funziona in un 
paio di casi...
-- 
   |   \    \  | ___|_  |_  | ianezz a casa sua... :-)
   |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
  _|_/  _\_|  _|____|___|___| 
http://www.linuxtrent.it

ancora, ne riparliamo, ok? :-)
Facciamo cosi ?
#include <string>
 std::string gt,gt2 ;
int main(void)
{
 return 0;
}
E' uguale non cambia niente .

 E' uguale non cambia niente .
Se anche questo va in crash, se ne puo` solo dedurre che il problema sta 
da un'altra parte.


da un'altra parte.
Grazie per la risposta "acuta" e "convincente" .
Pensa te che io non ci ero ancora arrivato ....... meno male che me lo
hai fatto notare .

> E' uguale non cambia niente .
Con VC++ 6.0 e le STL Microsoft non da problemi... deve essere il
compilatore o qualche opzione più probabilmente...
Dome

Dome
Secondo me e' un bug del compilatore infatti se dichiaro :
 std::string gt("Prova") , gt2("Un'altra prova") ;
 int main(void)
{
 return 0 ;
}
Compila e funziona perfettamente .
Non funziona in pratica solo se ,
dichiaro almeno DUE variabili globali senza argomenti .
Sarei curioso di testarlo con una versione del compilatore borland piu
recente.
Qualcuno lo farebbe per me ? Grazie

 hai fatto notare .
Arrangiati.
*PLONK*


 Qualcuno lo farebbe per me ? Grazie
Parli del Borland o del Microsoft? Comunque compilato col Borland C++
5.5.1 questo non dà problemi:
#include <string>
std::string gt, gt2;
int main()
{
    return 0 ;
}
EMG
--
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

5.5.1 questo non dà problemi:
Mi riferivo al Borland Builder 3 .
Anche io ieri ho provato con il free compiler 5.5 e funziona
regolarmente .
A questo punto credo sia  sicuramente un bug del Builder 3 (e non
potrebbe essere diversamente) ..
grazie

 potrebbe essere diversamente) ..
Uhmmmm.... pių che baco nel compilatore, chissa che non si tratti di un baco
nelle STL.. mi sa molto di qualcosa che qualche errorino nell'allocazione
delle stringhe... imho
Dome
Newsgroup: it.comp.lang.c++
Titolo: Reti Neurali

Cerco sorgenti per implementare reti neurali ion C/C++. Sapete indicarmi
dove posso trovarne?

 ha scritto nel messaggio
news:9c26l4$lih$1...@news.netpeople.it...

Newsgroup: it.comp.lang.c++
Titolo: C++: funzioni VIRTUAL

Chi puo' darmi una esauriente spiegazione del perche' dell'esistenza del tipo
di funzione virtuale nelle classi base del c++?
Per la cronaca, utilizzo VC++4.0 e sto' apprendendo la programmazione
MFC/Win95.
MATRO
http://www.geocities.com/SiliconValley/8383
Too many random sheets on your desk? "Reminder" is the right answer!
http://www.geocities.com/SiliconValley/8383/reminder.htm
ftp://ftp.volftp.vol.it/pub/pc/windows/win3xx/progs/communications/internet/rmd190.zip

 
Semplice, per implementare il polimorfismo. 
Prendi la seguente gerarchia:
class A
{

 di funzione virtuale nelle classi base del c++?
Le funzioni virtual servono a implementare il polimorfismo; questa
e' una delle proprieta' fondamentali di un linguaggio OO:
quando un oggetto di una classe derivata viene trattato come un oggetto
della sua classe base, il comportamento risultante deve essere sempre
quello "aspettato", cioe' coerente con il tipo corrente dell'oggetto:
es.: 
	class Base {
	public:
		...
		virtual void PrintName {cout << "Base" << endl;}
	}
	class Derived : public Base {
	public:
		...
		virtual void PrintName {cout << "Derived" << endl;}
	}
se ora uso la classe Derived come se fosse una Base:
	...
	Base *pDerived = new Derived(...);
	pDerived->PrintName();
 
	...
dato che il metodo PrintName e' stato dichiarato virtual, otterro'
come output:
		Derived
come ci si aspetta; se invece il metodo non fosse stato un virtual,
avrei ottenuto come outpu:
 
		Base
che non era quello che l'utente della classe Derived voleva.
La keyword virtual rende possibile il binding dinamico tra nome
del metodo e funzione effettivamente chiamata; in tal modo, si 
delega al linguaggio la chiamata del metodo corretto a seconda
del tipo di oggetto cui il puntatore si riferisce (run time, quindi,
appunto, dinamico).
Saluti.		
-- 
+-------------------+-------------------------------------------+
| Gianmario IAMONI  | phone: +39-2-4388-9064 (work)             |
| software engineer |        +39-322-53621   (home)             |
|                   | fax:   +39-2-4388-7241                    |
| Italtel spa       | email:  
iam...@ic2wh33.settimo.italtel.it
 |
+-------------------+-------------------------------------------+
Newsgroup: it.comp.lang.c++
Titolo: Una curiosità importante

Salve a tutti,
volevo chiedere una cosa.
se devo utilizzare delle variabili extern la dichiarazione della variabile
va sul file .h e la definizione extern miotipo miavar sui rimanenti files
del codice che le adoperano?
Il problema mi si pone perchè il BC5 mi da un warning :
Warn :appoggio.h(6,2):Cannot create pre-compiled header: initialized data in
header
Info :Linking C:\Tesi\main.exe
Il file appoggio.h contiene:
#define null_seg 0
#define data_seg 1
#define dummy_seg 2
char a;
int n_conn, rwnd;
double RTO, RTT;
int mpx_size;
double t_end;
double DT, p_loss;
typedef unsigned long int PID;
unsigned long int nt_seg=0;       // numero totale dei segmenti ....
// enum{ null_seg, data_seg, dummy_seg };
FILE *file_out;
FILE *receiver_file;
FILE *sender_file;
Se potete rispondermi vi sono grato!

 unsigned long int nt_seg=0;       // numero totale dei segmenti ....
Questo e' cio' che genera il warning, se segui il consiglio di cui sopra
dovrebbe sparire.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: vcl60.bpl e borland: non si include!

Nel mio EXE manca vcl60.bpl.
In Project->Options->Runtime Pakages ho aggiunto questa libreria.
Poi sono andato in Project->Options->Linker->Use dynamic RTL e l'ho 
deselezionato.
Ho salvato il tutto e ho rebuild all.
Il file è aumentato da 25Kb a 79Kb ma mi dà lo stesso errore.
Cosa mi sfugge?Xchè Borland non ce lo mette dentro?
Grazie.

Ciccio ha scritto:

Scoperto da solo qui:
http://www.hc11.demon.nl/thrsim11/cdk/documentation/builder_debug.htm
devo de-selezionare Packers-->Build with runtime packers
Newsgroup: it.comp.lang.c++
Titolo: help

ciao,
sono alle prime armi con il c++...
come faccio a passare una stringa come argomento ad un metodo?
se ho qualcosa di questo tipo
#include <iostream>
#include<string>
using std:: cin;
using std:: cout;
using std:: string;
int main () {
string s("");
count<<"scrivi una parola ";
cin>>s;
/* */
}
come faccio a passare s come argomento ad un metodo?
grazie, ciao, Jasmine

 come faccio a passare s come argomento ad un metodo?
nome_del_metodo(s);
-- 
Carlo Milanesi
http://carlomilanesi.wordpress.com/

nome_del_metodo(s);
ma ho già provato prima di scrivere qua,  il compilatore mi da un
errore dicendo che non puo' avere una stringa
come argomento di un metodo
il tipo string non è un tipo primitivo
penso sia per quello che non lo accetta cosi' come sta
(sto parlando proprio di tipo string, non di char
puntatori al primo elemento di un array di char)
ciao, Jasmine


Ti assicuro che invece e' possibile.
Ovviamente il tuo problema non sta nella chiamata di funzione, ma nella 
definizione della funzione, che non hai mostrato.
La funzione deve essere definita correttamente. Per esempio come:
   void nome_del_metodo(const std::string& s) { }


   void nome_del_metodo(const std::string& s) { }
grazie, quindi devo definirla come indirizzo con l'&?
e deve essere per forza const?
ciao, Jasmine

 e deve essere per forza const?
Con tutto il rispetto, ma non sarebbe il caso di studiare un minimo?
RTFM

 grazie, quindi devo definirla come indirizzo con l'&?
arg .... in una dichiarazione, & significa REFERENCE 
(un'alias, un nome diverso di un dato oggetto)
Solo in una istruzione (anche una definizione) & significa 
estrai indirizzo. E' un simbolo con due significati in 
contesti differenti.
Nota : se usi & non nella dichiarazione del prototipo, ma 
nella CHIAMATA ATTUALE della funzione, stai di nuovo usando 
la seconda accezione (indirizzo di)
ciao
Soviet


la seconda accezione (indirizzo di)
ok, chiarissimo
grazie
ciao, Jasmine
Newsgroup: it.comp.lang.c++
Titolo: linea di comando c++ 5.5 ?

sono abituato a programmare in turbo pascal
che contine un editor per i file sorgente.
come si fa a compilare/linkare i file sorgenti
dalla linea di comando?
cosa significa linea di comando?
che ambiente posso usare per i miei file sorgente e una volta terminati
con che sintassi posso lanciarli dal c++ compiler 5.5?
mi portreste fare un piccolo esempio pratico?
ringrazio anticipatamente .
ciao

 wrote in message 8mjcln$237$1...@sirmdpsin16.inwind.it...

Non credo di aver capito bene, comunque quello che devi fare è editare un file (o files)
con il programma C++ e compilarlo.
Ad esempio, supponendo che il tuo programma risieda su di un solo file di nome prog.cpp:
per prima cosa devi lanciare il prompt del DOS, e scrivere  BCC32 prog.cpp
ottenendo il programma prog.exe
Ciao  Manlio Perillo

 wrote in message
news:8mjcln$237$1...@sirmdpsin16.inwind.it...


 wrote in message
8mn2ch$bla$1...@sirmdpsin16.inwind.it...


Newsgroup: it.comp.lang.c++
Titolo: serializzazione: questa sconosciuta

Che cos'e' la serializzazione?
E' forse un sinonimo di bufferizzare ?
--
Visita la mia pagina personale:
 
http://members.xoom.it/Ake
*** grafica - ingegneria - midi - humour ***
****  abandonware - emulatori - MUD ****
 ***             DragonBall / Z                ****
Il Covo di Ake ora e' anche senza fili,
visitalo con il tuo cellulare WAP a:
 
tagtag.com/ake

 E' forse un sinonimo di bufferizzare ?
No. E' la trasformazione di un dato, tipicamente complesso, in una
sequenza di bit adatta ad essere trasmessa su un canale dati, ad esempio
via rete, o ad essere salvata su file, in modo tale da poter essere
ricostruita in seguito.
Ciao,
Nicola


cioč una specie di 'dump' ?
cel'hai un esempio?
grazie
ciao
xaero


Non proprio, perche' il punto fondamentale e' che la struttura dati sia
ricostruibile. Quando sorgente e destinazione sono "d'accordo" i tipi
coinvolti sono definiti implicitamente, ovvero chi legge sa gia' cosa
sta leggendo, altrimenti e' necessario prevedere un meccanismo per
memorizzare esplicitamente anche i tipi che devono essere letti.
Non saprei darti riferimenti per il C++, ma tanto Java quanto Delphi
posseggono questo meccanismo, e non dovresti aver problemi a reperire
documentazione in rete. Un esempio per il C e' la libreria XDR
sviluppata dalla Sun.
Ciao,
Nicola
Newsgroup: it.comp.lang.c++
Titolo: Spiegazione DLL

Salve!
Qualcuno puo' spiegarmi in modo semplice posso utilizzare una dll nel
programmino che segue:
int a,b,c;
main()
{
 c=somma(a,b);
} 
int somma(a,b)
{
 return(a+b);	
}
Ora, come va scritto il sorgente in modo da avere la funzione somma in
una dll???
Grazie in anticipo e ciao!
--
 \|||/         Fabry - 
fsa...@usa.net
 |_ _|                
 |院院
 | O |         Honda VT 750 ACE
_|\_/|_
  \ /
   O
   O

una dll???
Con Visual C++ 4.xx o successivi è semplice ( con altri ambienti dovrebbe
essere simile )
1)
Crei un  nuovo progetto ( Win32 Dynamic-Link Library , una DLL).
Questo progetto sarà formato da un solo file così:
_declspec (dllexport) int somma (int a, int b);    // Indica di "esportare"
il nome della funzione
int somma (int a, int b)
{
 return a+b;
}
Una volta linkato otterrati Somma.DLL e Somma.lib.
2)
Secondo progetto: un eseguibile standard.
Basta questo file:
_declspec (dllimport) int somma (int a, int b);    // Importa il nome dalla
DLL
int main()
{
 int c;
 c=somma( 2, 3);
 return 0;
}
Devi Linkare con Somma.lib ed ottieni il tuo eseguibile.
In fase di esecuzione Somma.DLL deve essere della stessa dir di questo
eseguibile.
Se non hai Visual C++ devi usare i file .DEF che fanno il lavoro svolto
dalle due righe
di codice commentate ( quelle sono estensioni oproprietarie di VC) ; oppure
usi estensioni
analoghe di un altro compilatore.
Livio
-------------------------------------------------------
|        God is real, unless declared integer         |
-------------------------------------------------------

Newsgroup: it.comp.lang.c++
Titolo: Linkare insieme codice C e C++

Come e' possibile linkare nello stesso progetto codice scritto in C con
codice scritto in C++. Ho letto da qualche parte che c'entrano le
dichiarazioni extern "c". 
Ho fatto delle prove con il BC 3.1 ma non ci sono riuscito.
Qualcuno puo' darmi una mano.
Grazie.
Paolo


se le librerie sono per C basta:
dalla sorgente che le include:
extern "C" {
#include "lib.h"
} // il che e' un po violento ma serve
oppure vatti a modificare i header per benino:
mettendo all'inizio e alla fine:
-------- Inizio del file
#ifdef _cplusplus
extern "C" {
#endif
..... dichiarazioni ............
#ifdef _cplusplus
} // extern "C"
#endif
----- EOF
-- 
LEGAL NOTICE:
THE ABOVE INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DAMAGES
WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL,
LOSS OF BUSINESS PROFITS, OR SPECIAL DAMAGES, EVEN IF THE AUTHOR
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE AUTHOR
DOES NOT AUTHORIZE TO APPLY THE ABOVE INFORMATION IN STATES WHERE
THIS DISCLAIMER IS NOT APPLICABLE.
---
I'm known for been wrong in the past... I may be wrong again.
<A HREF="mailto:
L...@Beer.com
">   Luis E. Garcia Ontanon      </A>
<A HREF="
http://www.concentric.net/~lontanon
"> My Homepage  </A>
Stop Spammers    <A HREF="
http://www.cauce.org
"> join CAUCE </A>
Newsgroup: it.comp.lang.c++
Titolo: Borland C++ 4.0 Builder

Mi rivolgo a coloro che hanno provato ad installare il demo del
compilatore in oggetto .
A me appare il seguente messaggio :" Invalid variant type conversion "
"Access violation at address xxxxxxxx in module BCB.EXE " . Questo
all'esecuzione del programma . 
Sto provando a contattare l'assistenza ,nel frattempo sarei curioso di
sapere se tale problema si e' manifestato  a qualcun'altro .
Queste le caratteristiche della macchina : CPU AMD K6 200 ,32 MB ram ,
900 MB di spazio disponibile su HDD ,S.O. Win95 OSR1 .
ciao
~~~~~~~~~~~~~~~~~
MAINARDI Gianfranco
Burago di Molgora (MI)
Italia
Email : 
main...@rete039.it
ICQ# number : 11607125
~~~~~~~~~~~~~~~~~

Eumpf, scusa se approfitto (senza peraltro rispondere alla tua domanda,
per chiari motivi):
dove si puo' reperire la demo di CBuilder4?


Newsgroup: it.comp.lang.c++
Titolo: come colorare una stringa di caratteri?

Vorrei colorare una stringa di caratteri (per intenderci dato cout<<"ciao";
vorrei colorare la scritta ciao).
Come posso fare?
Grazie

 ha scritto nel messaggio
news:bJnrc.309157$rM4.12...@news4.tin.it...

Non lo fai con il C++ standard.
Ci sono librerie O.S. specifiche.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux: it.comp.os.linux.development

Ci provo. Grazie per la dritta.

Newsgroup: it.comp.lang.c++
Titolo: prova, non leggere


 "...live long and prosper"

 prova
OK, non leggo!
Nicola.

Scrivesti

neanch'io !
------
Andrea
------

Newsgroup: it.comp.lang.c++
Titolo: [Linux ] Compilare librerie dinamiche

Ciao a tutti, 
sto impazzendo nel tentativo di compilare una libreria dinamica in linux.
Devo arrivare alla scrittura di una class factory per il caricamento
dinamico di oggetti da plugin esterni e così per fare un po' di pratica
ho iniziato a scrivere un esempio in stile "Hello world" dopo essermi
letto gli HowTo relativi.
Compilo la libreria in questa maniera:
gcc -c -fPIC -rdynamic libreria.cpp -o libreria.so
e l'eseguibile con
gcc -ldl main2.cpp  
per il caricamento della libreria all'interno del main uso una riga del
tipo:
	void*CM = dlopen("./libreria.so",RTLD_LAZY);
Tutto viene compilato correttamente (ho provato ia con g++ che con gcc),
ma quando lancio l'eseguibile ottengo l'errore:
**************************************************************
 ./libreria.so: only ET_DYN and ET_EXEC can be loaded
**************************************************************
Non dovrebbero bastare le opzioni che ho usato per dichiarare dinamica la
libreria? che altro devo aggiungere? grazie

 gcc -c -fPIC -rdynamic libreria.cpp -o libreria.so
Questa riga non genera una libreria dinamica. Consulta la sezione 3.4 del
citato how-to. 
Max

 gcc -c -fPIC -rdynamic libreria.cpp -o libreria.so
non si compila in questa maniera...l'opzione -c non va usata con le
librerie dinamiche; quella giusta è -shared.
Mai visto la creazione di librerie dinamiche con -rdynamic!!!
gcc -fPIC -shared libreria.cpp -o libreria.so
vedrai che dopo la libreria ti viene caricata bene

 Max
come nn detto :)
risolto, grazie comunque
Newsgroup: it.comp.lang.c++
Titolo: Problema Microsoft Visual C++

Salve, ho sempre usato il compilatore Dev C++, stavo realizzando un
programma, niente di chè.. però poi ho deciso di disinstallare il Dev C++ ed
installare Microsoft Visual C++ 6.0. Ho provato a ricompilare il codice del
programma fatto col vecchio compilatore e mi da una marea di errori.., di
sintassi ed altro. Per fare un esempio, col Dev C++ io definivo una
variabile non sempre all'inizio del programma, ma quando mi serviva e non mi
diceva nulla, mentre con il visual c++ se definisco una variabile dopo delle
istruzioni, mi ritorna il classico errore: undeclared identifier... C'è la
possibilità di correggere questi tipi di errori.. Devo assolutamente
riuscire a ricompilare quel programma, e cmq il problema delle definizioni
delle variabili non è l'unico, ho fatto solo un esempio. Spero possiate
aiutarmi. Bye

delle variabili non è l'unico
Quali sono gli altri?
-- 
Marco Barisione (ICQ 84277092)

 ha scritto nel messaggio
news:d3577ukiqmtm7umn5...@4ax.com...


 ha scritto nel messaggio
news:ivNc8.6114$E33.1...@twister1.libero.it...


 > > >delle variabili non č l'unico


ad altre cose;
In C++ standard le dimensioni degli array devono essere costanti (al
contrario del nuovo standard C). gcc permette dimensioni variabili
come estensione. Devi creare gli array dinamicamente con una new o
utilizzare i vector ad esempio.


 int *anims = (int *)malloc(sizeof(int)*(p1->numframes*10));
Visto che si tratta di C++, perchč non usare direttamente new?
int *anims = new int[ p1->numframes * 10 ];
e poi per deallocare usi delete:
delete [ ] anims;
Oppure, ancora meglio, usare direttamente un bel vector ( includendo
l'header <vector> ):
std::vector<int> anims(p1->numframes*10);
In questo modo non devi nemmeno preoccuparti di gestire la deallocazione
della memoria dinamica.
Ciao,
Cecco

int *anims = (int *)malloc(sizeof(int)*(p1->numframes*10));
Se programmi in C++ usa new non malloc.
Puoi quotare?


 ha scritto nel messaggio
news:1ROc8.3448$3s4.1...@news1.tin.it...

Newsgroup: it.comp.lang.c++
Titolo: CURIOSITÀ

Salve......
sto iniziando i primi passi nel mondo del C++ e mi č accaduta una cosa
strana:
ho scritto un programma con il compilatore Tclite (una versione light di
C++).
Il programma inizia con  #include <iostream.h> e funziona perfettamente.
Avendo la versione completa del borland C++ ho trascritto il programma in
questo compilatore e poi ho copiato la directory Include (che contiene tutti
i file .H) di Tclite in C++:sorpresa!!!
Quando lancio il programma da me scritto il compilatore mi informa di non
riuscire a trovare il file IOSTERAM.H.
Qualcuno mi saprebbe spiegare il perchč?
Grazie!

Una domanda: perche' li hai copiati? In ogni compilatore C++ ci sono gia'.
Nella mia versione non c'era il file iostream.h e quindi,pensando che non ci
fossero nemmeno gli altri, ho copiato tutto.
Per la directory.......ho provato a copiare il file nella stessa directory
del programma,ma non č accettato dal compilatore;ho provato a copiare il
file nella stessa directory dove c'erano gli altri file del mio
compilatore,ma non lo riconosce.
Non so cosa fare!
Ciao

del programma,ma non è accettato dal compilatore;ho provato a copiare il


    ma che versione e'???
Era la 3.0.Comunque ora ho risolto il problema disinstallandola.Per ora
userò come compilatore Tclite e più avanti comprerò una nuova versione:quale
mi consigli? E che prezzo (più o meno)?
Ciao.
Newsgroup: it.comp.lang.c++
Titolo: E' possibile?

La variabile più grande che posso dichiarare è un double (64 bit) giusto? Se
volessi allocare per una variabile più di 64 bit cosa dovrei fare se
possibile?
Ciao
Giuseppe Di Natale
gdin...@camomillaitalia.it
------------------------------------------
JS Labs - FAQ di it.comp.lang.javascript
http://jslabs.webhostme.com
FlyScript by JS Labs, JS in 3 click
http://jslabs.webhostme.com/servizi/flyscript/
------------------------------------------

 possibile?
Ad esempio:
    unsigned char pippo[2000];
questo dichiara una variabile (non scalare) detta pippo, per cui
sono allocati (tipicamente) 16,000 bit.
Alex

>     unsigned char pippo[2000];
Ma cosě crei un array, il mio problema nasce con i numeri molto grandi, per
molto grandi intendo non rappresentabili con 64 bit. Quale puň essere una
soluzione?

soluzione?
Vuoi una soluzione divertente?
Ti crei un tipo di dato, il C++ e' il linguaggio piu' adatto per queste
cose.
Ti crei un oggetto int64 e implementi funzioni, costruttori, overloading di
operatori etc!
Dopo che ti sarai sbattutto parecchio per farlo, puoi utilizzarlo
comodamente tutte le volte che vuoi pero!
Alex

 soluzione?
Una soluzione puo` essere un array, un vector, o altra struttura
non-scalare in grado di fare cio` che desideri.  La migliore forma
di dati (non scalari, ovviamente) a questo scopo sono tipicamente
le classi, ed e` totalmente inutile reinventare l'acqua calda
sviluppandosele da soli, visto che non c'e` altra abbondanza
sulla rete.
Hai l'imbarazzo della scelta sulle librerie da usare a questi
scopi, vedi 
http://www.mathtools.net/C++/Extra_precision_computation/
ad esempio.  Fra i tantissimi package gratuiti ivi elencati,
LiDIA, ExacMath, CLN, e GMP, potrebbero fare al caso tuo.
Alex

Grazie, sei stato gentilissimo :)

Un long è 32bit, quindi è più piccolo di un double che ne usa 64


 Un long è 32bit, quindi è più piccolo di un double che ne usa 64
Sulla mia macchina, un long e' di 64 bits.  Il mondo e' bello perche'
e' vario...
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 
!!! che macchina è?



Commodore 64.

 !!! che macchina è?
MLO@axcdf4 1 $ uname -a
OSF1 
axcdf4.pd.infn.it
 V4.0 878 alpha alpha
Una Digital (ora Compaq) Alphastation sotto Digital Unix.

Newsgroup: it.comp.lang.c++
Titolo: Buffer di tastiera

Come si disattiva il buffer di tastiera ?
Devo muovere un oggetto sullo schermo con le freccie, ma quando premo una
freccia l'oggetto si muove a scatti, alla stessa velocità di ripetizione dei
caratteri. Come si fa ad eliminare questo fatto ?
Grazie.

 wrote in message
MFSS3.5452$SV.6...@typhoon.libero.it...


 ...usa la funzione fflush(stdin);
La funzione fflush() non è applicabile allo standard input.
EMG

 >
Non credo che esista una soluzione standard. Se lavori sotto DOS, puoi dare
un'occhiata ai sorgenti delle routine di gestione della tastiera della
libreria Allegro del DJGPP. Fornisce una mappa dei tasti premuti. Notare che
per poterlo fare, Allegro sostituisce il gestore di tastiera con un suo
driver. Non trovo il mio link ad Allegro, ma dovrebbe essere facile da
trovare cercando in rete o partendo dalla home page del DJGPP
(
http://www.delorie.com/djgpp
)

 wrote in message
381E0486...@flashnet.it...


 SORGENTI ED INFO VARIE.
Siamo qui per questo. Ma molti non sopportano di essere corretti...
EMG
Newsgroup: it.comp.lang.c++
Titolo: *(C++)

Inizio a pensare di non avere mai capito come funziona l'operatore ++ a
destra di una variabile.
Riporto un pezzo di codice come esempio. Avendo un vettore il cui primo
elemento da` il numero di elementi restanti, il mio obiettivo era di
leggerli tutti; in questo esempio, ne dovrei leggere 5, poiche' il primo
elemento del vettore e` 5.
#include <iostream>
int v[] = { 5, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80 };
int main() {
	int *pCursor = v, *pEnd;
	pEnd = *(pCursor++) + pCursor; // <-- ?
	std::cout << "Elementi di v:";
	while(pCursor < pEnd) std::cout << " " << *(pCursor++);
	std::cout << std::endl;
	return 0;
} // main()
Facendo correre il programma compilato con gcc 3.2.2 ottengo:
Elementi di v: 35 40 45 50
Se al posto di ++ avessi usato una funzione tipo:
template <class T> T RightIncr(T& v) {
	T temp = v;
	v += 1;
	return temp;
} // RightIncr<T>()
avrei l'output che ritenevo corretto:
Elementi di v: 35 40 45 50 55
Il DDDebugger mi mostra che effettivamente l'incremento di pCursor
avviene dopo l'assegnazione a pEnd.
Insomma, come funziona quel "++"?
Grazie per l'attenzione :)
-- 
Hamlet

 pEnd = *(pCursor++) + pCursor; // <-- ?
Secondo lo Standard (cap 5, par 4), l'ordine con cui vengono valutati gli
operandi e le sotto-espressioni e l'ordine in cui hanno luogo i side-effect
non è specificato.
Se vuoi ottenere il comportamento che ti aspettavi, devi introdurre un
sequence-point:
 int len = *(pCursor++);
 pEnd = len + pCursor;
MM

 } // main()
Scusa, ma č giusto cosě: fai puntare pEnd all'elemento che vale 55, ma nel
while stampi solo fino al 50, perchč non appena ha stampato il 20
l'iteratore viene incrementato all'indirizzo di pEnd, viene valutato e
quindi esce dal while (se pCursor == pend l'espressione del while ritorna
false). Se cambi il while in:
while(pCursor++ < pEnd) std::cout << " " << *(pCursor);
ottieni quello che vuoi.
Ciao

 Scusa, ma č giusto cosě: fai puntare pEnd all'elemento che vale 55
Il fatto e` che mi aspettavo che quell'espressione facesse puntare pEnd
a 60.
E sbagliavo, perche' mi ha risposto MM che ho fatto affidamento ad un
comportamento che non e` regolato dallo standard (chissa` quante volte
l'ho fatto... ma questa volta m'e` andata male ;-) ).
Ringrazio entrambi per la puntuale ed esauriente risposta!
-- 
Hamlet
Newsgroup: it.comp.lang.c++
Titolo: PROVA

sdertert

 sdertert
jhjhghjf
Newsgroup: it.comp.lang.c++
Titolo: [?] - Creare funzioni da esportare

Salve a tutti !
Qualche anno fa creavo con il Borland C++ semplici DLL a 16 bit da
utilizzare da Visual Basic.
Ora utilizzo Microsoft Visual C++ 5.0 senza MFC, ovviamente a 32 bit.
La sintassi precedente era :
extern "C"
{
    int FAR PASCAL _export myFunc#1(int,int);
    void FAR PASCAL _export MyFunct#2(int, long);
}
ecc. ecc.
ora con Microsoft non funge...
1)Qual'è la sintassi corretta ( anche di LibMain )?
2)  E' necessario definire la WEP e chiamare UnlockSegment in LibMain ?
Grazie a tutti.
--
Genesio Conti - Calvizzano (NA) - Italy
E-Mail :  gen...@NOSPAMsofthome.net
( remove NOSPAM for answer )

Ciao,
al posto di _export puoi utilizzare __declspec(dllexport),
oppure creare un file .DEF da aggiungere al progetto
dove indicare il nome delle funzioni esportate.
Es.
    int FAR PASCAL _export myFunc#1(int,int);
    int APIENTRY __declspec(dllexport) myFunc#1(int,int);
Al posto di LibMain(), ora c'e' DllMain() con funzione anche di Wep(),
troverai ogni info sull'help del Visual C++
ciao, Franco
--
Posted from [194.184.225.66] by way of 
law2-oe20.hotmail.com
 [216.32.180.124]
via Mailgate.ORG Server - 
http://www.mailgate.org


Ok per __declspec(dllexport), la aggiungo, ma APIENTRY mi dà un warning di
dichiarazione obsoleta ( vado sotto Win98 ).
Inoltre, dichiarando la funct da VB, all'atto della chiamata, mi da errore:
Convenzione di chiamata non valida, il che significa che i parametri sullo
stack non vengono passati correttamente ( _stdcall o altro ? ).
Altro: con Anteprima di Win 98, dovrebbe comparire la/le funzioni esportate,
ma non c'é traccia...
help, please...

Newsgroup: it.comp.lang.c++
Titolo: Tesista in difficoltà

Sto usando il compilatore Visual C++, del pacchetto Microsoft Visual Studio
6.0.    Non sono riuscito a trovare, delle funzioni equivalenti alle:
 gotoxy (che sposta il cursore, in una posizione qualsiasi dello schermo, ed
il cui prototipo è presente nel file di intestazione conio.h);
clrscr (che cancella la regione di schermo corrente; anche il suo prototipo
è specificato in conio.h);
entrambe valide per la Borland.
In realtà ho trovato le funzioni equivalenti
_settexposition  e  _clearscreen ,
valide per Microsoft.
Entrambe hanno un prototipo specificato nel file di intestazione GRAPH.H;
questo secondo quanto specificato sul libro
' La guida completa C ' di Herbrt Schildt.
Il problema è, che non esiste nessuna funzione con questo nome, ne  un file
di intestazione GRAPH.H; sempre in relazione al compilatore sopra.
Se può servire il progetto è specificato come   win 32 console application
Ringrazio anticipatamente
Dario.

Dario ha scritto nel messaggio ...

Sbaglio o hai gia posto la domanda in qualche altro luogo?
Ad ogni modo, conio.h non è standard, e Microsoft nella sua conio non
supporta tali funzioni. Perciò, devi affidarti a soluzioni OS-dependent.
CIAO
Domenico
Newsgroup: it.comp.lang.c++
Titolo: Introdurre degli 'a capo' in una stringa

Salve a tutti, il problema che vi pongo potrebbe risultare banale, 
eppure è un pò che ci sto pensando..
Ho una stringa con un determinato testo, e vorrei sostituire tutti i 
caratteri di un certo tipo con degli a capo.
In sostanza:
se ho una stringa così fatta: questo|è|un|esempio
vorrei ottenere:
questo
è
un
esempio
Soluzioni plausibili? Grazie.

Musk ha scritto:

Hai provato a sostituire il carattere '|' con '\n'??
Qualcosa del tipo:
std::string stringa ="questo|è|un|esempio";
for(int i=0; stringa[i]; i++)
    if(stringa[i] == '|') stringa[i]='\n';
std::cout << stringa <<std::endl;

Ero giusto intento a spolverare la mia collezione di trofei quando noob 
in data 17/10/2005 0.10 disse:

Quello che mi proponi funziona, ma se utilizzo una console..
Rendo più chiaro il mio problema:
Sto lavorando su un'applicazione (grafica), ho un determinato testo in 
un Memo1, lo salvo in una stringa, sostituisco determinati caratteri con 
degli a capo e poi rimetto tutto nel Memo1.
Col codice qui sopra anziche' saltarmi delle righe inserisce spazi..
E' una cosa un po' da matti, ma se qualcuno sa come fare ne sarei grato! 
ciao a tutti!

 ciao a tutti!
Ah ora ho capito, ma credo di non poterti dare una mano...^_^
Forse dovresti chiedere in un ng apposito, questo riguarda solo c++ 
standard.
Ciao

> degli a capo e poi rimetto tutto nel Memo1.
Forse magari a occhio č che tu stai scrivendo usando una funzione fatta per 
il "singola linea" e non per il multilinea :-)
Nel senso che non č detto che il controllo grafico che stai usando supporti 
il testo su piů linee.
--- bye 

 ciao a tutti!
Bisognerebbe sapere cosa intende per "ritorno a capo" il tuo terminale
grafico. Sotto Windows il fine riga e' una coppia 0x0D 0x0A (CR LF).
Mai provato a aprire un file testo Unix con notepad?
Per qualcosa di portabile:
#include <string>
#include <sstream>
#include <iterator>
std::string space_to_nl(const std::string& s)
{
  using std::string;
  std::ostringstream tmp;
  string::const_iterator it(s.begin()), next;
  while (it != s.end()) {
    next = find(it, s.end(), ' ');
    copy(it, next, std::ostream_iterator<char>(tmp));
    tmp << std::endl;
    it = next==s.end() ? next : next + 1;
  }
  return tmp.str();
}

Musk in data 16/10/2005 22.31 disse:

Grazie a tutti x le diverse soluzioni..
Cmq ho risolto utilizzando i file..
Lavorando con i file basta aprire un file, con un ciclo sostituire i 
caratteri '|' con '\n' e infine chiudere il file.
Non posto il codice perché non ce l'ho sottomano.. ciao!!
Newsgroup: it.comp.lang.c++
Titolo: temporary objects: const o no?

Sto rileggendo in questi giorni "Thinkink in C++" 2nd di Bruce Eckel
e ho notato che l'autore ripete con una certa insistenza che un
temporary object e' sempre const!
Scorrendo lo standard ISO C++ tuttavia non c'e' una sola riga che
suffraghi questa affermazione, anzi sembra di capire che a norma
di standard un temporary object e' soltanto un rvalue per di piu'
modifiable se di tipo user defined, con due caratteristiche:
1 - non puo' essere usato per inizializzare una non-const reference
2 - non puo' essere usato a sinistra di un operatore di assegnamento
Questa interpretazione sembrerebbe sostenuta dal
seguente codice:
#include <iostream>
class Test {
public:
	Test(int i) : m_i( i )  {}
	void set(int newval)      // notare membro non-const
	{
		std::cout << "old m_i value: " << m_i << std::endl;
		m_i = newval;
		std::cout << "new m_i value: " << m_i << std::endl;
	}
	int get() const
	{
		return m_i;
	}
private:
	int m_i;
};
int main()
{
	// Test(10) temporary Test object creato dal compilatore
    //  per valuare la full expression Test(10).set(20)
	Test(10).set(20);
 
	return 0;
}
output del programma ottenuto con tre diversi compilatori
old m_i value: 10
new m_i value: 20
C'e' qualcuno che ha delle conoscenze piu' approfondite
su tale argomento?
TIA, Aldo
--
Is everybody in? Is everybody in?
The ceremony is about to begin.
                        (Jim Morrison)

 Scorrendo lo standard ISO C++ tuttavia non c'e' una sola riga che
Non sono un esperto, ma mi pare che comunque lo standard non imponga un buon
stile di programmazione. Probabilmente Eckel intendeva riferirsi alle "buone
abitudini", non a cose vietate dalle standard.
--
Alessandro Monti

 wrote in message news:aLT74.32794$m62.3...@news.infostrada.it...

A norma di standard, un temporary object non e` const, ma non
puo` essere bound a una _reference_ non-const (con un paio di
eccezioni sottilissime e molto specifiche, che sembrano fatte
apposta per far funzionare l'altrettanto sottile trucchistica della
implementazione di auto_ptr<>...:-).
Alex
Newsgroup: it.comp.lang.c++
Titolo: Mi correggo ed aggiungo una domanda

Credo di aver trovato io stesso la soluzione.
Anzitutto mi scuso per aver scritto delle cose poco precise. La fretta di
scrivere attaccati alla linea telefonica porta anche a questo :-)
Il programmino che uso è il seguente:
#include <stdio>
#include <stdlib>
#include <iostream>
#include <list>
#include <iterator>
using namespace std;
typedef std::list <unsigned long int> lista;
typedef lista:: iterator  Iter;
void func_1(lista &x);
void func_2(lista *y);
main(){
 lista l;
 func_1(l);
 for(Iter i=l.begin();i!=l.end();i++)
     cout<<"elemento "<<(*i)<<endl;
   // funz_2(l);
   char a;cin>>a;
 return 0;
}
void func_1(lista &x){
 x.push_back(4);
 x.push_back(10);
 x.push_back(13);
 x.push_back(145678);
}
/*
Cosi non si deve fare, perchè spuntano gli errori
Info :Compiling C:\BC5\BIN\liste.cpp
Error:  liste.cpp(24,13):Cannot convert 'std::list<unsigned long>' to
'std::list<unsigned long> *'
Error:  liste.cpp(24,13):Type mismatch in parameter 'y' in call to
'func_2(std::list<unsigned long> *)'
Error:  liste.cpp(42,17):Structure required on left side of . or .*
Error:  liste.cpp(43,17):Structure required on left side of . or .*
Error:  liste.cpp(44,17):Structure required on left side of . or .*
Error:  liste.cpp(46,17):Structure required on left side of . or .*
Warn :  liste.cpp(47,6):Parameter 'y' is never used
*/
/*
void func_2(lista *y){
    y.push_back(4);
    y.push_back(10);
    y.push_back(13);
    y.push_back(145678);
    }
*/
Mi sono dato anche una spiegazione per l'uso di func_1 anzichè func_2.
Ora vorrei chiedervi se è giusto quello che penso.
Penso che non si può passare un puntatore a lista, trattandosi la lista di
"un puntatore", ma il modo idoneo è usare il reference.

"un puntatore", ma il modo idoneo è usare il reference.
Innanzi tutto la lista non e` implementata necessariamente (e
generalmente) con un semplice puntatore, ma e` possibile
passare un puntatore a puntatore.
Paolo

 "un puntatore", ma il modo idoneo č usare il reference.
Non prenderla come un'offesa personale, ma ho qualche perplessita' a
proposito di un'universita'/corso di laurea/professore che pretende da
voi per tesi un programma complesso come quello che stai realizzando tu
senza che abbiate acquisito basi di informatica fondamentali.
Ciao,
Nicola

Newsgroup: it.comp.lang.c++
Titolo: error: void value not ignored as it ought to be

extern "C"{
void malloc(int );
char *strcpy(char* ,const char*);
int printf(const char*,...);
int exit(int );
int strlen(const char *);
}
const char *str ="Hello world\n";
main()
{
	char *s = (char *) malloc((sizeof(char)*strlen(str))+1);//questa è la
riga che da l'errore!
	strcpy(s,str);
	printf("%s",s);
	exit(0);
}
compilando ottengo il seguente errore: error: void value not ignored
as it ought to be
P.S. il comp è g++ vers. 4.1.3

 P.S. il comp è g++ vers. 4.1.3
Se usi il C++ perche' non usi la sua libreria standard? Ti eviteresti
diversi mal di testa:
#include <string>
#include <iostream>
const char *str ="Hello world\n";
int main()
{
    string s = str;
    std::cout << s;
}
Ciao,
Nicola


ok,risolo!Grazie.
Newsgroup: it.comp.lang.c++
Titolo: directory e file con il c++s sotto DOS

Ecco il listato del programma:main()
{
	cout <<"\n INSTALLAZIONE PROVA \n";
	// copierà i file cia.txt e stop.txt su c:\install
	cout <<"\n sto' installando i file \n";
	system("c:");
	system("md install");
	system("copy a:\ciao.txt  c:\install");
	system("copy a:\stop.txt  c:\install");
	cout <<"\n File installati con successo \n";
	return 0;
}
Io lo lancio da un dischetto contenente i file che devo copiare sul mio disco fisso. In realtà (una volta eseguito il programma) mi crea la directory install sul dischetto e di file non ne copia manco uno.
Come mai? Come posso risolvere il problema?
credici
cre...@infinito.it
N.B.: si noti che il sistema operativo è il DOS
----------------------------------------------
Virgilio Mail - Il tuo indirizzo E-mail gratis
http://mail.virgilio.it
--
Posted from [212.48.4.46] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Ciao,
non so se succede anche agli altri, ma le tue risposte vengono viste da
Netscape come nuovi messaggi e risultano scomode da leggere.
Prova a controllare gli strumenti che usi per accedere ai newsgroup.
Grazie e ciao,
Nicola

 	system("copy a:\ciao.txt  c:\install");
Come ben saprai, \c e \i vengono interpretati come sequenze di escape
all'interno del const char []; forse volevi scrivere \\c e \\i ?
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
Newsgroup: it.comp.lang.c++
Titolo: gestione immagini visula studio.net

 
  Ciao a tutti volevo chiedere aiuto per un progeto di fusione di immagini:
Devo implementare un algoritmo di tipo laplaciano ma non so coem gestire le
immagini che acquisisco dato che conosco poco visual 
studio.net
. Come faccio
ad agire sui pixel della matrice dell'immagine? Ho creato un form in cui
carico dal disco le immagini che mi interessano elaborare ma coem faccio ad
agire sui pixel? Esiste qualche metodo in C++ che permetta a partire da
Image *image1=Image::FromFile("path"); di accedere ai pixel ed ai colori ad
esso associati?. Ho trovato il metodo getPixel(...) ma non ho ben capito
quali sono gli argomenti ;ad esempio hdc che cosa è? scusate la domanda e
grazie a chi vorrà aiutarmi.....
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Per manipolare immagini devi usare librerie non standard.
Per esempio, la tua "Image" non fa parte del linguaggio C++ standard a 
cui e' dedicato questo newsgroup.
Se devi parlare di programmazione con l'SDK di Windows o MFC rivolgiti 
al newsgroup it.comp.programmare.win32.
Se devi parlare di programmazione con il Framework .NET rivolgiti a 
qualche altro newsgroup (non so quale).
Comunque, in generale non è opportuno eseguire algoritmi 
computazionalmente pesanti accedendo ai pixel con le primitive della 
libreria (tipo GetPixel e SetPixel, perche' inefficienti).
Scegli una delle due:
* Usa le funzioni della libreria che agiscono sull'intera immagine, o su 
grandi parti dell'immagine, se esistono funzioni adeguate.
* Copiati l'immagine in una struttura dati, opera su questa struttura 
dati con le istruzioni del C++, e infine ricostruisci l'immagine a 
partire dalla tua struttura dati. Tipicamente la struttura dati sara' 
una matrice di numeri.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

Newsgroup: it.comp.lang.c++
Titolo: [OT] MFC dove e cosa?

Salve,
conoscete buoni libri che insegnino ad usare le MFC in modo semplice?
ed eventuali tutorial in inglese o italiano da trovare in giro per la rete?
grazie
--
NighTiger
www.spippolatori.com
----------------------------------------------
               Evita flat:
Aruba, Edi&Sons e Galactica
----------------------------------------------

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti
Newsgroup: it.comp.lang.c++
Titolo: sono io il pazzo i il compilatore?

salve,
ho installato djgpp dal sito 
www.delori.com/djgpp
 usando l'opzione
zip-picker,
dopo avere decompresso il tutto se faccio un programma in c (es. prova.c) e
lo vado a
compilare:
gpp prova.c -o prova.exe
mi dice:
gpp.exe: installation problem, cannot exec `cpp': No such file or directory
(ENOENT)
come posso risolvere?
grazie
ps:non mi parte neanche con rhide

Hai configurato Autoexec.bat?
--
Non è stato rilevato nessun bug nel sistema.
Si desidera crearne uno?
-- 
Posted from [151.39.48.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c++
Titolo: Compilatore e linker programma C

Non mi č chiaro il compito del linker...
 
con l'istruzione
#include <stdio.h>
 
Il linker copia il codice delle funzioni da me utilizzate (ad esempio il 
printf) dalla libreria stdio.h e li  aggiunge al file elaborato dal 
compilatore e quindi alla fine č come se io avessi scritto direttamente il 
codice della funzione (printf) nel mio codice sorgente?
 
 
ciao
 
nero23 
 

 nero23
 
No.
Quando un compilatore trova un #include <nomefile> sosituisce quella riga con il contenuto del file stesso. Un .h solitamente contiene solo dichiarazioni, quindi il codice dov'è? Il codice è in una _libreria_, ovvero un programma senza main(), ma le cui funzioni sono accessibili attraverso il relativo .h. Il linker fa la magia di attaccare il tuo programma eseguibile con la libreria.
Questo a grandi linee... :-)
Ciao!

 nero23
 
Non è il linker, è il preprocessore
 
Programma -> Preprocessore -> compilatore -> assemblatore -> linker
 
Questi sono i passi eseguiti
 

 Ciao!
 
quindi la libreria, che contiene la vera funzione printf, rimane sempre 
un "corpo esterno" e fuori l'exe?
 


Solitamente sì, e il motivo è semplice; molti programmi utilizzano la printf, quindi perché copiarla in ciascuno? Ecco, questo si chiama linking dinamico (il linker mette dentro l'eseguibile le informazioni necessarie al sistema operativo per sapere a runtime quali librerie caricare e come instradare le chiamate a funzione).
L'operazione di "tirare dentro" la libreria ovviamente esiste, e si chiama linking statico; si fa sempre con il linker ed è utile più per necessità di gestione del codice (tengo separate due rami di codice e il linker me le mette insieme).
Visto che parli di .exe immagino tu lavori con windows; su windows le DLL (Dynamic Link Library) sono le librerie per fare linking dinamico, i .lib (non so se li hai mai visti) sono le librerie per il linking statico. Su linux .so (shared object) sono dinamici, .a oppure .o (object) statici.
Ciao!