Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio
Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio
Motorola edge 70 Fusion FIFA World Cup 26 Edition porta la maglia iridata su uno smartphone accessibile: display Extreme AMOLED da 6,78 pollici a 144Hz, fotocamera Sony LYTIA 710 con moto ai, Snapdragon 7s Gen 3 abbinato a 8GB di RAM, batteria da 5200 mAh con ricarica TurboPower a 68W e certificazione IP68/IP69, il tutto in una veste PANTONE Silhouette con logo dorato a 24 carati, moto buds bass incluse in confezione e contenuti software dedicati ai Mondiali 2026
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Dopo più di un anno dal primo test drive ci siamo rimessi al volante della Renault 5 E-Tech Electric, questa volta utilizzandola come prima auto per circa due settimane. Scoprite con noi se il progetto convince ancora
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-04-2005, 17:31   #1
tglman
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:
int my_read(long file,char *buff,int lenbuf)
{
#ifdef WIN32
    
int lenr;
    
int s=ReadFile((HANDLE)file,buff,lenbuf,&lenr,0);
    if(
s!=0&&lenr==0)return FILE_EOF;
    else return 
lenr;
#else
    
int s=fread(buff,lenbuf,1,(FILE *)file);
    if (
feof((FILE *)file))return FILE_EOF;
    else return 
s;
#endif

il problema risale proprio dal fatto che io avrei potuto utilizzare sia fread e foef anche su windows ma se lo utilizzo mi viene idicata la fine di alcuni file prima del dovuto non vorrei che su linux succedesse la stessa cosa
ciao...
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2005, 19:11   #2
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 11:21   #3
cionci
Senior Member
 
L'Avatar di cionci
 
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;
}
Se s è > 0 i dati ci sono ancora... Controlla il dato puntato da eof per verificare l'end of file... I file descriptor sono degli int...
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...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 16:43   #4
tglman
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
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 17:09   #5
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Quote:
Originariamente inviato da tglman
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
In Windows (e sui Mac) un file puo' venire aperto in modalita' testo o modalita' binaria. Se apri un file binario come un mp3 in modalita' testuale rischi di vederti troncare la lettura del file al primo carattere EOF.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 17:47   #6
71104
Bannato
 
L'Avatar di 71104
 
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!!!
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 17:48   #7
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
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:
Originariamente inviato da 71104
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!!!
ehm se non si usano funzioni paricolari vuoi mettere a confronto l'efficienza dei due linguaggi??

~§~ 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
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 17:58   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da 71104
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!!!
Ma queste sono bazzecole da risolvere per la portabilità del codice... E' chiaro che Java sia più portabile...è stato creato per questo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 18:34   #9
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da 71104
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!!!
Se ti riferisci alla nostra discussione nel thread di fenomeno85 allora dovresti rileggerti i miei messaggi perchè io non ho mai affermato questo e speravo che dopo 2 o 3 pagine di thread si fosse capito.

ciao
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 21:24   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da VICIUS
Se ti riferisci alla nostra discussione nel thread di fenomeno85 allora dovresti rileggerti i miei messaggi perchè io non ho mai affermato questo e speravo che dopo 2 o 3 pagine di thread si fosse capito.

ciao
pardon...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 21:49   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Fenomeno85
ehm se non si usano funzioni paricolari vuoi mettere a confronto l'efficienza dei due linguaggi??
premesso che io AMO il C e che uso quasi esclusivamente quello (neanche il C++, solamente il C, spesso neanche il C99, ma solo ANSI C ):
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 21:52.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 21:57   #12
71104
Bannato
 
L'Avatar di 71104
 
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 22:02.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 23:59   #13
cionci
Senior Member
 
L'Avatar di cionci
 
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 Tutte le funzioni e strutture supportate da MSVCRT con l'underscore davanti non sono standard, ma sono messe per compatibilità con altri SO...e per questo spesso sono supportate anche senza l'underscore...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 00:40   #14
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
non stavo più parlando di ANSI C...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 00:58   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da 71104
non stavo più parlando di ANSI C...
Non sembrava...
Quote:
Originariamente inviato da 71104
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
stat non implementata nella standard C library
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 11:23   #16
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da tglman
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
fopen(fname, "rb") (ANSI X3.159-1989)
__________________
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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 12:12   #17
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 12:17   #18
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da cionci
Infatti mi sa che lui sta usando open...visto il passaggio del fd come int...
..."open" con "fread"? LOL

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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 14:13   #19
tglman
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.
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 14:18   #20
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
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
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio Motorola edge 70 Fusion FIFA World Cup 26 Editio...
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati? Renault 5 elettrica al giudizio definitivo: solo...
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
La GPU più piccola al mondo &egra...
DoomPaint: sì, adesso si pu&ograv...
BIOS bloccato, Claude Code trova il punt...
Università di Modena e Reggio Emi...
Giulia Caffi, prima laureata in Health I...
NVIDIA GeForce Titan X compie 10 anni: q...
Un deposito anti-speculazione per i nuov...
Anche il cerotto diventa smart: accelera...
Mezzo milione di galassie in una sola im...
Lefant V1 a 99 euro: 40.000 Pa, LED touc...
Adesso il cibo si ordina a voce: Just Ea...
I brani creati dall'IA fuori dalle class...
Il gioco che tutti aspettano nel 2026 no...
Kindle Scribe 32 GB in offerta: schermo ...
MSI rompe gli schemi: il nuovo OLED 4K d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v