|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
[c] Rendere sorgente portabile
Sto lavorando ad un piccolo progetto e sto cercando di renderlo il più possibile portabile da un sistema ad un'altro, o organizzato il tutto costruendo delle funzioni del tipo di questa...
Codice PHP:
ciao... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
funziona uguale mi sa che hai sbagliato l'implementazione della funzione.
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prova una cosa del genere:
Codice:
int my_read(int file,char *buff,int lenbufm int *eof)
{
int s=fread(buff,lenbuf,1,(FILE *)file);
*eof = feof((FILE *)file));
return s;
}
In ogni caso se pensi alla portabilità è meglio usare fopen invece di open per aprire i file...a meno che non ti serve qualche opzione particolare di open... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Non mi sono spiegato bene... il mio problema è:
Quando leggo un file del tipo un immagine o un file mp3 la funzione feof mi dice che il file è finito prima della fine reale del file e sempre alla ricorrenza di un carattere, il problema su windows dovrebbe riguardare le librerie del compilatore le quali sono un pò vecchie e usano un'implementazione di fread errata in quanto esiste una versione di fread e feof che davano il file finito alla ricorrenza di un certo carattere, queste librerie vennero cotruite cosi perchè non era prevista la scrittura di file con tutti i caratteri ma solo di file con all'interno caratteri alfanumerici, Dopo questo poema che ho scritto sopra vi chiedevo solamente può verificarsi che questo problema che o avuto con un compilatore di windows si ripeta anche con altri su linux o altri sistemi... Ciao |
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
e pensare che qualcuno qui tempo fa sosteneva fermamente la grande portabilità del C e del C++, di gran lunga superiore a quella del Java!!!
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao |
|
|
|
|
|
|
#10 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
|
|
|
|
|
#11 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
1) l'efficienza è praticamente pari perché (da quanto ne so, ma non credo di sbagliarmi) il Java non viene interpretato ed eseguito JIT, ma prima assemblato e poi eseguito, il tutto JIT dalla virtual machine 2) il Java è più portabile del C, anche se usi solo routines standard (molto difficile al giorno d'oggi) perché un programma C deve essere quantomeno ricompilato (e cmq stai tranquillo che in un programma serio l'#ifdef ci scappa sempre 3) il vero vantaggio del C rispetto al Java non è tanto l'efficienza quanto la potenza; spesso per scegliere tra C e Java è necessario fare un paio di conti su questo piano: cosa è più importante per me, cos'è che devo mettere assolutamente in primo piano, la portabilità oppure la potenza (e magari anche l'efficienza)??? il mio programma è qualcosa di molto specifico per una particolare piattaforma, oppure voglio poterlo usare su qualsiasi piattaforma senza tante rotture di...? Ultima modifica di 71104 : 03-04-2005 alle 22:52. |
|
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
come conclusione aggiungo:
- il Java è ottimo per lo sviluppo di programmi multipiattaforma: il linguaggio è semplice e produttivo, i programmi Java possono essere eseguiti immediatamente su qualsiasi piattaforma supportata, e il corredo di classi a disposizione (implementate su qualsiasi piattaforma) è vastissimo, tanto da renderlo un linguaggio assai potente, ma mai comparabile (su questo punto di vista) con - il C, che invece è qualcosa che assume forme diverse a seconda della piattaforma sul quale lo si usa, e perciò è più specifico, senza contare che un programma C per girare su diverse piattaforme deve essere ricompilato N volte, spesso con numerose condizionali, e spesso anche nonostante l'uso ESCLUSIVO di routines STL! infatti son pochi a saperlo, ma esistono sottili differenze tra le varie implementazioni esistenti di STL: si veda ad esempio la routine "stat", o "_stat", che dir si voglia: MSDN non documenta "stat", documenta solamente "_stat", anche se in realtà il MSVCRT le supporta entrambe... Ultima modifica di 71104 : 03-04-2005 alle 23:02. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Magari hai fatto l'esempio sbagliato...perchè stat non fa parte della standard library...almeno di quella dell'ANSI C
|
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
non stavo più parlando di ANSI C...
|
|
|
|
|
|
#15 | ||
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Quote:
|
||
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Infatti mi sa che lui sta usando open...visto il passaggio del fd come int...
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Già che me lo fai notare, c'è un possibile problema di portabilità con i sistemi a 64 bit nell'usare long in situazioni simili: compilatori Microsoft: sizeof(long)==sizeof(int) Compilatori GNU: sizeof(long)==sizeof(void *) Non so se il tipo HANDLE sotto windows è un puntatore; se lo è, la frittata è pronta...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
in windows tutti gli HANDLE e figli sono puntatori ed infatti ho sbagliato a scrivere long perchè mi sono confuso dal fatto che sizeof(int)==sizeof(long) su processori 32bit,comunque non so se ci sia qualche eccezzione ma il sizeof(int)==sizeof(void *) sempre perchè l'int dipende a punto dalla dimenzione dei registri del processore.
Ciao. |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Devi solo fare attenzione se intendi portare il codice su processori a 64 bit, lì i compilatori possono interpretare long in maniera diversa.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:44.


















