Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-04-2005, 18: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, 20: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, 12: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, 17: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, 18: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, 18: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, 18: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, 18: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, 19: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, 22: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, 22: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 22:52.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2005, 22: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 23:02.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2005, 00: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, 01: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, 01: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, 12: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, 13: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, 13: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, 15: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, 15: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


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Nella capsula Orion di Artemis II ci sar...
L'immagine del mese del telescopio spazi...
Heatspreader originale al posto del wate...
Ubisoft ha definitivamente archiviato Wa...
Motivair by Schneider Electric presenta ...
Un dissipatore che non richiede energia ...
Con Maia 200 Microsoft alza l'asticella ...
La Cina impone requisiti anche per lo st...
Apple lancia AirTag aggiornato: range es...
Microsoft risolve i blocchi di Outlook: ...
OpenAI verso il disastro finanziario? L’...
X nei guai: l'UE indaga sui pericoli del...
Caso Corona-Signorini: il giudice blocca...
470 petaFLOPS con una frequenza di 56 GH...
WhatsApp: abbonamento per rimuovere la p...
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: 05:44.


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