Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-06-2009, 17:18   #1
nlazza87
Member
 
L'Avatar di nlazza87
 
Iscritto dal: Jun 2006
Messaggi: 52
[C] inclusione file

Salve, sto creando un piccolo programma in C ma ho problemi con l'inclusione dei file header.
Ho creato il file "fixed.h" in cui definisco una struct e inserisco l'interfaccia dei metodi, un file "fixed.c" in cui implemento i metodi del file header ed un programma di test in cui è presente il main.
Sia sul file .c che nel file di test ho messo: #include "fixed.h" ma quando compilo il file di test mi viene detto che i metodi che uso nel main non sono definti.
Per caso dimentico qualcosa?
__________________
Macbook Pro 15,4" 2,4Ghz Penryn, 2Gb Ram, 200Gb HD
nlazza87 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 17:21   #2
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
a parole sembra tutto giusto, posta in piccolo esempio dei 3 file
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 20:35   #3
nlazza87
Member
 
L'Avatar di nlazza87
 
Iscritto dal: Jun 2006
Messaggi: 52
Fixed.h

#define F 8
#include <stdio.h>
typedef unsigned int FixedPoint;

FixedPoint fixpoSum(FixedPoint a, FixedPoint b);

....altri metodi....

Fixed.c

#include <stdio.h>
#include "Fixed.h"
#include <math.h>

FixedPoint fixpoSum(FixedPoint a, FixedPoint b){
return a+b;
}

...altri metodi implementati....
Test.c

#include <stdio.h>
#include "Fixed.h"

int main(){
FILE * ptr;
FixedPoint a;
a=fixpoSum(5,5);
__________________
Macbook Pro 15,4" 2,4Ghz Penryn, 2Gb Ram, 200Gb HD
nlazza87 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 20:52   #4
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
come compili i sorgenti? ah è buona cosa usare gli include guard:

http://it.wikipedia.org/wiki/Include_guard
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2009, 14:06   #5
nlazza87
Member
 
L'Avatar di nlazza87
 
Iscritto dal: Jun 2006
Messaggi: 52
Avevo già provato ad inserire #ifndef FIXED_H_ ed #endif ma non cambia nulla.

Per quanto riguarda la compilazione:
gcc -c fixed.h
gcc -c fixed.c
gcc -c test.c
gcc -o test test.c -lm

-lm perchè uso la libreria math.h
__________________
Macbook Pro 15,4" 2,4Ghz Penryn, 2Gb Ram, 200Gb HD
nlazza87 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2009, 14:41   #6
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Quote:
Originariamente inviato da nlazza87 Guarda i messaggi
Avevo già provato ad inserire #ifndef FIXED_H_ ed #endif ma non cambia nulla.

Per quanto riguarda la compilazione:
gcc -c fixed.h
gcc -c fixed.c
gcc -c test.c
gcc -o test test.c -lm

-lm perchè uso la libreria math.h
il problema è nella compilazione, compilare un .h non ha senso, e in fase finale compili solamente test.c per creare l'eseguibile senza linkare fixed.
devi fare così

gcc -c -o fixed.o fixed.c
gcc -c -o test.o test.c
gcc -o test test.o fixed.o -lm

in questo modo crei gli object file per ogni file compilato e poi li linki insieme nell'eseguibile "test".

in questi casi utilizzare un makefile semplifica notevolmente le cose, sopratutto se nel progetto aggiungerai altri file da compilare.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2009, 14:51   #7
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 Antonio23 Guarda i messaggi
oltre all'utile consiglio sugli include guard, non è necessario che fixed.c includa fixed.h. per il resto credo che ci sia qualcosa che non va nel modo in cui compili (stai compilando a mano o con qualche ide?)
Sì, ma non ha detto che si limita a solamente quel metodo. E' generalmente invece utile includere il .h per non dover preoccuparsi dell'ordine in cui si implementano le funzioni o se ci sono chiamate incrociate.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2009, 18:23   #8
nlazza87
Member
 
L'Avatar di nlazza87
 
Iscritto dal: Jun 2006
Messaggi: 52
Quote:
Originariamente inviato da vizzz Guarda i messaggi
il problema è nella compilazione, compilare un .h non ha senso, e in fase finale compili solamente test.c per creare l'eseguibile senza linkare fixed.
devi fare così

gcc -c -o fixed.o fixed.c
gcc -c -o test.o test.c
gcc -o test test.o fixed.o -lm

in questo modo crei gli object file per ogni file compilato e poi li linki insieme nell'eseguibile "test".

in questi casi utilizzare un makefile semplifica notevolmente le cose, sopratutto se nel progetto aggiungerai altri file da compilare.
Ti ringrazio, così funziona tutto ! Un domanda stupida: se io modifico il file di test oppure anche il file fixed.c è sufficente che esegua gcc -c per controllare eventuali errori?
__________________
Macbook Pro 15,4" 2,4Ghz Penryn, 2Gb Ram, 200Gb HD
nlazza87 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2009, 18:25   #9
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
E' sufficiente per controllare eventuali errori di compilazione.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Windows 11 è più veloce: implementati il...
Ritornano gli auricolari con il cavo: Te...
Insta360 Luna Ultra: ecco il debutto del...
BOOX Go 6 Gen II ufficiale: ora si scriv...
BYD sfida Tesla con un piano da 2 miliar...
La corsa ai datacenter passa dalla stamp...
La Tangenziale di Napoli è la pri...
Steam Machine potrebbe essere dietro l'a...
Come l'Edge AI sta ridefinendo l'operati...
macOS 27 Golden Gate manda in crisi Asah...
Il Messico lancia il primo EV nazionale:...
Via libera in 17 Paesi europei alle sper...
Apple aggiorna le regole dell'App Store:...
I dipendenti Amazon non ci stanno: basta...
EssilorLuxottica produrrà occhial...
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: 14:32.


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