Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2008, 20:40   #1
Zero-Giulio
Member
 
Iscritto dal: May 2007
Messaggi: 292
[C/C++] Come

Non programmo da un bel po di tempo e non ricordo come si usano le variabili globali.

Ho scritto qualcosa ma ottengo errori di compilazione (uso DevC++ o Code::Blocks).

Allora... Ho creato un progetto. Ci stà il .h

Quote:
#include <stdio.h>
#include <stdlib.h>

struct nodes
{
double x;
double y;
double z;
};

struct edges
{
long int first_node;
long int second_node;
};

typedef struct nodes nodes;
typedef struct nodes *nodesptr;
typedef struct edges edges;
typedef struct edges *edgesptr;

nodesptr nodes_list=NULL;
edgesptr edges_list=NULL;

int read_nodes_file (char *);
un .c

Quote:
#include "whitney.h"

extern nodesptr nodes_list;
extern edgesptr edges_list;

int read_nodes_file (char nodes_file_name[])
{
long int i;
long int cont, nodes_num;
double x, y, z;
FILE *nodes_file;

nodes_file=fopen (nodes_file_name, "r");
if (nodes_file == NULL)
{
printf ("\nError: can't open file %s.\n", nodes_file_name);
return 0;
}
fscanf (nodes_file, "%ld", &nodes_num);
nodes_list=(nodesptr) malloc ((nodes_num+1)*sizeof (nodes));
nodes_list[0].x=nodes_list[0].y=nodes_list[0].z=(double) nodes_num;
for (i=1; i<=nodes_num; i++)
{
fscanf (nodes_file, "%ld %lf %lf %lf", &cont, &nodes_list[i].x, &nodes_list[i].y, &nodes_list[i].z);
if (cont != i)
{
printf ("\nError: in line %ld of file %s.\n", i, nodes_file_name);
return 0;
}
}
fclose (nodes_file);
return 1;
}
e un secondo .c col main:

Quote:
#include "whitney.h"

int main ()
{
int logic=0;
char nodes_file_name [40];
printf ("\nIntroduce the name of the file with the list of the nodes: \n\n\t");
scanf ("%s", nodes_file_name);
logic=read_nodes_file (nodes_file_name)
}
Come dicevo ho errori di compilazione. Dice che ci sono dichiarazioni multiple di nodes_list e di edges_list.

Non so come risolvere.

In pratica: ho due strutture, nodes e edges, e voglio due vettori globali di queste struct globali, perchè voglio utilizzarle ovunque (in tutte le funzioni di tutti i files (che saranno più dei due che ho messo sopra)). Come faccio?
Zero-Giulio è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 20:43   #2
Zero-Giulio
Member
 
Iscritto dal: May 2007
Messaggi: 292
Ho dimenticato di completare il titolo del topic e ora non riesco a editare.

Sono uno sbadato, mi spiace. Speriamo qualcuno entri a leggere lo stesso.

PS: ho cut/copy il codice, e nel farlo ho perso l'indendatura. Spero riusciate a leggerlo cmq.
Zero-Giulio è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 22:11   #3
Kenger
Member
 
Iscritto dal: Aug 2005
Messaggi: 168
Non ho mai usato i due IDE da te citati, ma penso che l'errore sia dovuto alla doppia inclusione del .h
Prova rimuovendo una delle due inclusioni. ^^
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 22:20   #4
Alex_87_xelA
Senior Member
 
Iscritto dal: Nov 2008
Messaggi: 530
prova a toglioere ...

Codice:
extern nodesptr nodes_list;
extern edgesptr edges_list;
... queste 2 linee di codice dal file .c e vedi cosa succede.

perchè includendo il file h automaticamente includi anche le 2 variabili ... quindi non dovresti dichiararle in quel modo ... lo dovevi fare se stavano in un altro file .c , mentre invece stanno in un file .h.

fammi sapere
Alex_87_xelA è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2008, 23:37   #5
Zero-Giulio
Member
 
Iscritto dal: May 2007
Messaggi: 292
Quote:
Non ho mai usato i due IDE da te citati, ma penso che l'errore sia dovuto alla doppia inclusione del .h
Prova rimuovendo una delle due inclusioni. ^^
eh, ma non posso togliere l'.h. Nel .h c'è dichiarato TUTTO, dalle struct ai prototipi. Devo per forza includerlo.

[quote]
prova a toglioere ...

Codice:
[quote]
extern nodesptr nodes_list;
extern edgesptr edges_list;
Quote:
... queste 2 linee di codice dal file .c e vedi cosa succede.

perchè includendo il file h automaticamente includi anche le 2 variabili ... quindi non dovresti dichiararle in quel modo ... lo dovevi fare se stavano in un altro file .c , mentre invece stanno in un file .h.

fammi sapere
non va, nel .c non vede le variabili.
Zero-Giulio è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 08:11   #6
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Hai messo queste due linee:

Codice:
nodesptr nodes_list=NULL;
edgesptr edges_list=NULL;
nel file di intestazione. Significa che dichiari piu' volte le stesse variabili globali, in due file diversi (quelli che includono il tuo file di intestazione, e che vengono compilati separatamente).

Queste due linee sono da rimuovere dal .h e sono da sostituire con una dichiarazione extern (cosi' che puoi "vedere" le variabili da tutti i file .c che lo includono).

La dichiarazione andra' poi fatta in UN SOLO file sorgente (per esempio, quello che contiene il main()).
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 08:54   #7
Zero-Giulio
Member
 
Iscritto dal: May 2007
Messaggi: 292
Già, è così...

Adesso funge, grazie...
Zero-Giulio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
SpaceX Starship: dopo il successo di Fli...
Gli incendi in Spagna minacciano la staz...
Intel punta sul vetro: partnership con L...
L'acquisizione di ATI compie 20 anni: AM...
iPhone 18 Pro, Apple le prova tutte per ...
NVIDIA, Samsung, SK hynix e Broadcom: a ...
Sony rompe il silenzio: God of War Laufe...
iPhone Ultra, lancio ritardato per il pi...
Microsoft rafforza l'attivazione di Wind...
Galaxy S27 e S27+: Samsung starebbe test...
macOS più sicuro di Windows? Il n...
L'UE punta il dito contro TikTok: ecco c...
Qualcomm aumenterà i prezzi dei c...
TOP 12 Amazon weekend: al top una stampa...
Come sfruttare le offerte di Amazon per ...
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: 02:06.


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