Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
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 ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2008, 21: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, 21: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, 23: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, 23: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 10-12-2008, 00: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, 09: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, 09: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


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...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Sottile, veloce e con un'ottima autonomi...
Il top di gamma compatto di OnePlus &egr...
Modificare l'indirizzo Gmail è finalment...
Perché le GeForce RTX con pi&ugra...
Più tempo online non equivale a più disa...
Amazon Weekend: iPhone 17 Pro, robot asp...
TV OLED 65'' top di gamma al 50%: 144Hz,...
Londra si prepara al terremoto 'intellig...
Scope elettriche in offerta su Amazon: f...
iPhone 17 Pro a un nuovo minimo storico ...
DJI Mini 4 Pro Fly More Combo a 859€ su ...
Roborock in offerta su Amazon: QV 35A e ...
Crisi della RAM: Intel rassicura sul mer...
Dreame taglia i prezzi su Amazon: L40 Ul...
ChatGPT, arrivano gli annunci pubblicita...
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: 15:17.


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