Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
The Edge of Fate è Destiny 2.5. E questo è un problema
The Edge of Fate è Destiny 2.5. E questo è un problema
Bungie riesce a costruire una delle campagne più coinvolgenti della serie e introduce cambiamenti profondi al sistema di gioco, tra nuove stat e tier dell’equipaggiamento. Ma con risorse limitate e scelte discutibili, il vero salto evolutivo resta solo un’occasione mancata
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-01-2013, 13:50   #21
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Il comando per compilare con GCC si Windows:

Codice:
gcc -O3 dirwalk.c -o dirwalk.exe
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2013, 14:15   #22
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Allucinante! Su Linux con GCC non mi trova dir.h(come Visual Studio su Windows):

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2013, 14:17   #23
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
non intendevo proprio quello. l'esempio che avevo fatto era semplicemente per dire che se in linux vuoi linkare con la libreria libm.so, devi dare alla riga di comando il parametro -lm (ovvero -l togli lib e .so dal nome del file e ti rimane m, se vuoi linkare lib<nome>.so, dai -l<nome> ecc.).
Credevo fosse un problema di linking (evidentemente non e'), per cui non linkava di default la libreria in cui i tipi e le funzioni in dir.h sono implementate (non solo quale sia, libm.so e' la libreria dove sono implementate le funzioni di math.h, per esempio).
Ok Antonio, con GCC su Windows ho risolto. Ho il problema con GCC su Linux. Non mi trova dir.h(come Visual Studio su Windows).
Evidentemente devo passare -I specificando il percorso. Ma qual è?
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2013, 14:43   #24
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Ahhhhh!!!!!

Fossil dos header file:

http://www.daniweb.com/software-deve...ds/84545/dir.h


Allora ho fatto bene a consigliare le api di Windows:

http://msdn.microsoft.com/en-us/library/Aa364418.aspx

Ma, Misterx, perché non provi a compilare e far funzionare il codice prima di copincollarlo da chissà quale sito?
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2013, 15:10   #25
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Eh si Antonio, credo proprio di si.

La soluzione migliore rimane, secondo me, quella di AnonimoVeneziano nel contest 19:

Codice:
#if !_WIN32
bool load_files(const char* directory) {

  DIR* RESTRICT dir_obj = opendir(directory);
  struct dirent* RESTRICT dir_struct;
  char * RESTRICT * RESTRICT files_names;
  const uint16_t path_size = strlen(directory);

  int count = 0;

  if (dir_obj == NULL)
    return TRUE;

  while ((dir_struct = readdir(dir_obj)) != NULL) {
    //printf("File name: %s\n", dir_struct->d_name);
    if (!IS_SPECIAL_DIRECTORY(dir_struct->d_name))
      ++file_nums;
  }

  rewinddir(dir_obj);

  files_names = malloc(file_nums*sizeof(char*));  

  while ((dir_struct = readdir(dir_obj)) != NULL) {
    if (!IS_SPECIAL_DIRECTORY(dir_struct->d_name)) {
      int name_size = strlen(dir_struct->d_name);
      int size = path_size + name_size + 1;
 
      files_names[count] = malloc(sizeof(char)*size);
      strncpy(files_names[count], directory, path_size);
      strncpy(files_names[count]+path_size, dir_struct->d_name, name_size);
      //printf("%s\n", files_names[count]);
      ++count;
    }
  }

  closedir(dir_obj);

  //printf("%d\n", file_nums);
  //printf("Size of dir: %d\n", path_size);
  
  // Read files
  read_files(files_names, file_nums);

  for (int i = 0; i < file_nums; ++i)
    free((void*)files_names[i]);

  free((void**)files_names);
 
  return FALSE;
}
#else

bool load_files(const char* directory) {

  WIN32_FIND_DATA find_data;
  HANDLE hFind;
  char * RESTRICT * RESTRICT files_names;
  const uint16_t path_size = strlen(directory)-1;

  int count = 0;
  hFind = FindFirstFile(directory, &find_data);
  if ( hFind == INVALID_HANDLE_VALUE)
    return TRUE;

  do  {
    //printf("File name: %s\n", dir_struct->d_name);
	if (!(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
        ++file_nums;
  } while (FindNextFile(hFind, &find_data));

  FindClose(hFind);
  hFind = FindFirstFile(directory, &find_data);

  files_names = 
	  (char* RESTRICT * RESTRICT) malloc(file_nums*sizeof(char*));  

  do {
    if (!(find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
      int name_size = strlen(find_data.cFileName);
      int size = path_size + name_size + 1;
      files_names[count] = 
		  (char* RESTRICT)malloc(sizeof(char)*size);
      strncpy(files_names[count], directory, path_size);
	  strncpy(files_names[count]+path_size, find_data.cFileName, name_size+1);
      //printf("%s\n", files_names[count]);
      ++count;
    }
  } while (FindNextFile(hFind, &find_data));

  FindClose(hFind);

  //printf("%d\n", file_nums);
  //printf("Size of dir: %d\n", path_size);
  
  // Read files
  read_files(files_names, file_nums);

  for (int i = 0; i < file_nums; ++i)
    free((void*)files_names[i]);

  free((void**)files_names);
 
  return FALSE;
}

#endif
In questo modo si ha il codice compilabile e con gcc e con Visual Studio; e su Windows e su Linux.

Ciao e grazie di tutto. Non si finisce mai d'imparare


Ultima modifica di Vincenzo1968 : 23-01-2013 alle 15:13.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2013, 15:19   #26
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Altro spezzone di codice firmato AnonimoVeneziano per il contest 19:

Codice:
#if _WIN32
#include <Windows.h>
#define RESTRICT __restrict
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
typedef char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;
#define fseeko _fseeki64
#define ftello _ftelli64

const char* files_dir = ".\\All\\*";

#else

#include <stdint.h>
#include <stdbool.h>
#include <dirent.h>
#define RESTRICT restrict
#define TRUE true
#define FALSE false
const char* files_dir = "./All/";
#endif
Poi dice che i contest non servono a niente

Ultima modifica di Vincenzo1968 : 23-01-2013 alle 15:21.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 09:12   #27
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
una variante più moderna della precedente. Ho lasciato le modifiche a scopo didattico. L'ho compilato con lcc-win32

Codice:
#include <stdio.h>
//#include <dir.h>
//#include <dos.h>
#include <io.h>

int main(void)
{
   //struct ffblk ffblk;
   struct _finddata_t ffblk;
   int done;

   printf("Lista dei file di tipo: *.*\n");
   //done = _findfirst("*.*", &ffblk, 0);
   done = _findfirst("*.*", &ffblk);

   while(_findnext(done, &ffblk) == 0)
   {
       //printf(" %s\n", ffblk.ff_name);
	   printf(" %s\n", ffblk.name);
       //done = _findnext(&ffblk);
   }

   return 0;

Ultima modifica di misterx : 24-01-2013 alle 19:01.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 13:46   #28
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515


Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 14:11   #29
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Moderno. Bihhhhhh!

http://stackoverflow.com/questions/2...sing-io-h-file
Quote:
Found something that looks like your problem here. Apparently, althought io.h is a standard Microsoft header, there is no port of it to mobile plataforms.

You are probably using some library that was not designed for use with mobile devices, and that library must be trying to use the non-mobile API.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 14:24   #30
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Perché lo provi su ubuntu se è per windows?
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 15:00   #31
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Perché lo provi su ubuntu se è per windows?
Può darsi che su Windows funzioni(anzi funzionerà sicuramente) sostituendo dir.h con io.h, ma è "moderno"?

Apparently, althought io.h is a standard Microsoft header, there is no port of it to mobile plataforms.

Lo sviluppo per "mobile platform" è una cosa moderna o no?

Dai un'occhiata su MSDN e vedi cosa consiglia oggi la Microsoft per leggere directory e file: api windows o io.h? Secondo te?

Ultima modifica di Vincenzo1968 : 24-01-2013 alle 15:03.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 15:02   #32
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
La soluzione migliore, secondo me, ripeto, è quella fornita da AnonimoVeneziano nel contest 19: moderna e compilabile su entrambi i sistemi(Linux/Windows) e con entrambi i compilatori(GCC/Visual Studio).

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 15:37   #33
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Può darsi che su Windows funzioni(anzi funzionerà sicuramente) sostituendo dir.h con io.h, ma è "moderno"?

Apparently, althought io.h is a standard Microsoft header, there is no port of it to mobile plataforms.

Lo sviluppo per "mobile platform" è una cosa moderna o no?

Dai un'occhiata su MSDN e vedi cosa consiglia oggi la Microsoft per leggere directory e file: api windows o io.h? Secondo te?
Non so cosa intendesse misterx con "moderno" ma l'OP ha detto chiaramente che cercava una soluzione per windows, quindi non capisco perché posti i tentativi falliti di compilare su Ubuntu a discredito della soluzione proposta.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 16:01   #34
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Non so cosa intendesse misterx con "moderno" ma l'OP ha detto chiaramente che cercava una soluzione per windows, quindi non capisco perché posti i tentativi falliti di compilare su Ubuntu a discredito della soluzione proposta.
Perché quella è una soluzione per Windows non portabile nelle diverse piattaforme windows: desktop, mobile, etc.
Che facciamo? Scriviamo millemila funzioni, una per ogni piattaforma Windows?
Se proprio dobbiamo scrivere più funzioni tanto vale scriverne due come ha fatto AnonimoVeneziano e il codice funziona dappertutto.

Se poi non gl'interessa farlo funzionare su Linux, è sempre meglio, secondo me, usare l'api Windows piuttosto che scrivere una funzione per win desktop e una per win mobile.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 16:18   #35
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Quello che hai detto adesso ha un senso, far intendere che non sia una buona soluzione perché non compila su Ubuntu invece no
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 16:47   #36
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Quello che hai detto adesso ha un senso, far intendere che non sia una buona soluzione perché non compila su Ubuntu invece no
Invece copincollare codice senza nemmeno provarlo è corretto? Questo v'insegnano all'università?

Dire che mi professo grande esperto del C senza fornire un link è corretto?
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 19:50   #37
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Invece copincollare codice senza nemmeno provarlo è corretto? Questo v'insegnano all'università?

Dire che mi professo grande esperto del C senza fornire un link è corretto?
Direi di no, ma cosa ti dice che non l'abbia provato?
Non so, a me non l'hanno insegnato.
Ti professi grande esperto del C o no? Se sì è corretto, altrimenti no. In entrambi i casi il link non è necessario se non irreperibile
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 20:05   #38
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Direi di no, ma cosa ti dice che non l'abbia provato?
Non so, a me non l'hanno insegnato.
Ti professi grande esperto del C o no? Se sì è corretto, altrimenti no. In entrambi i casi il link non è necessario se non irreperibile
No, non mi sono mai sognato di professarmi grande esperto del C. Lo testimoniano molti miei post. Se ti fa piacere te ne elenco qualcuno.

Wingman87, smettiamola con questa farsa. Misterx è andato a cercare in fretta e furia un codice che fosse molto più semplice e più corto di quello che avevo consigliato io. Con l'unico intento di farmi fare una brutta figura. Cosa che non gli è riuscita. Anzi, s'è verificato il contrario.

MisterX ha cominciato a fare brutte figure nel thread sugli automi a stati finiti dove blaterava di gente che avrebbe dovuto sgamarmi. Cosa avrebbero dovuto sgamare e chi avrebbe dovuto sgamarmi se lo sa solo lui.

Evidentemente anche qui ha postato con l'unica intenzione di rendermi ridicolo. Ha copincollato il codice da chissà dove e l'ha postato. Per sua sfortuna io, contrariamente a lui, sono abituato a compilare e controllare il funzionamento del codice prima di postarlo. E la sua prima versione non compilava né con Visual Studio né con GCC per Windows.
In seguito io sono riuscito a farlo compilare con GCC per Windows e la seconda versione che ha postato MisterX è identica alla mia tranne che per "include <io.h>". S'è affrettato a postarla spacciandola per moderna

Se tu avessi letto con attenzione tutto il thread te ne saresti accorto da solo. Mi pare di notare anche in te un certo malanimo nei miei confronti... Se così non fosse sei evidentemente molto, ma molto, distratto.
Visto che sei cosi solerte nel fare notare ciò che è corretto e ciò che non lo è, avresti dovuto per primo riprendere MisterX e poi, casomai, me.

Ultima modifica di Vincenzo1968 : 24-01-2013 alle 20:14.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 20:35   #39
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2774
Non provo malanimo nei tuoi confronti e può darsi che sia stato distratto.
Il motivo per cui me la sono presa con te è che non mi piace come combatti le tue battaglie: con sottintesi, ironia e, soprattutto, un sacco di messaggi fuori tema. Vai dritto al punto come hai fatto nel tuo ultimo post e chiudila lì no?
E comunque, posso capire che ti sia sentito così dopo il messaggio di misterx ma io (una persona distratta qualunque) non ho pensato che la tua soluzione fosse ridicola.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2013, 20:49   #40
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Direi di no, ma cosa ti dice che non l'abbia provato?
ero preso col lavoro e leggo solo ora questo dibattito. Per chiarire: il primo codice proviene dalla documentazione ufficiale del compilatore della Borland, le funzioni devono essere chiamate in quell'ordine e quindi non c'è nulla da inventare; si compila con Turbo C della Borland.

Il secondo codice è un mio adattamento e si compila tranquillamente con lcc-win32 che guardacaso è gratuito.

IMHO è sempre meglio postare codice già noto, quello ricavato dalle varie documentazioni dei compilatori ad esempio, in quanto si dà la possibilità ai non esperti di approfondire. Se posti codice tuo solitamente altamente personalizzato e non documentato crei solo confusione in chi ti legge. Io ad esempio che sviluppo in ambiente Borland Builder C++ dove il codice non è affatto pulito solo raramente posto codice C a meno che non sia di facile comprensione come nei miei precedenti esempi copiaincollati

Ad ogni buon conto: Borland Builder C++ compila tranquillamente tutti gli esempi da me postati senza generare alcun warning, se l'autore avesse specificato cosa usa per sviluppare programmi avrei agito in modo differente, ma vedo che non interviene più.

Speriamo che i vari codici gli siano serviti.
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
Roborock QV 35A a 429€ o Dreame L40 Ultr...
SpaceX Starship: Ship 37 ha eseguito due...
Sharkoon punta sui case a basso costo, m...
La tua rete Wi-Fi fa pena? Questi FRITZ!...
Amazon, un weekend di fuoco per gli scon...
Ancora 3 smartwatch Amazfit in forte sco...
Sharkoon A60 RGB: dissipatore ad aria du...
HONOR 400 Pro a prezzo bomba su Amazon: ...
Offerte da non perdere: robot aspirapolv...
Apple Watch e Galaxy Watch ai minimi sto...
Il rover NASA Perseverance ha ''raccolto...
NASA e ISRO hanno lanciato il satellite ...
Switch 2 ha venduto 5,82 milioni di cons...
Assassin's Creed Black Flag Remake: le m...
Cosa ci fa una Xiaomi SU7 Ultra alle por...
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: 07:43.


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