Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
Abbiamo messo alla prova la nuova AORUS GeForce RTX 5080 INFINITY WOOD 16G, una delle interpretazioni più particolari della GPU NVIDIA Blackwell. Prestazioni, frequenze operative, temperature, consumi e margini di overclock sono stati confrontati con altre RTX 5080 custom e con la Founders Edition. Il design in legno è solo uno degli elementi distintivi di una scheda che punta a ritagliarsi uno spazio nella fascia più alta del mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-08-2007, 15:35   #1
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
[C] matrice dinamica di puntatori a funzione

Non riesco a dichiarare una matrice dinamica di puntatori a funzione.

In questo senso:
questa e´ fissa a 10 * 10
Codice:
void(*x[10][10])();
ma a me servirebbe una dichiarazione di puntatore a puntarore, tipo
Codice:
int **x;
perche´ non so quante funzioni avro´.

Se la faccio cosi´ mi da errore (giustamente):
Codice:
void(*x[][])();
xxx.c:11: error: array type has incomplete element type

Mi sto inventando un sistema a stati dinamico sia in verticale che orizzontale e ogni stato ha quindi una serie di funzioni ma non posso (potrei ma non voglio) sapere ne quanto stati avro´ ne quante azioni per ogni stato.

Ma si puo´ fare ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 09-08-2007, 16:07   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da trallallero Guarda i messaggi
Non riesco a dichiarare una matrice dinamica di puntatori a funzione.
Una cosa così:
Codice:
typedef void (*PFUNC)();


PFUNC **mat;
int righe=10, colonne=10;
int i;

mat = (PFUNC**) malloc (righe * sizeof (PFUNC*));

for (i = 0; i < colonne; i++)
    mat[i] = (PFUNC*) malloc (colonne * sizeof (PFUNC));


...

mat[0][0] = una_funzione;
...
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 09-08-2007, 16:37   #3
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin Guarda i messaggi
Una cosa così:
Codice:
typedef void (*PFUNC)();


PFUNC **mat;
int righe=10, colonne=10;
int i;

mat = (PFUNC**) malloc (righe * sizeof (PFUNC*));

for (i = 0; i < colonne; i++)
    mat[i] = (PFUNC*) malloc (colonne * sizeof (PFUNC));


...

mat[0][0] = una_funzione;
...
la typedef

minkia andbin, ne sai una piu´ del diavolo

grazie
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 09-08-2007, 17:46   #4
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
non ho ben capito cosa devi fare ,ma sembra interessante.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 09-08-2007, 18:15   #5
Baronerosso9
Junior Member
 
Iscritto dal: Aug 2007
Messaggi: 22
Mi*chia... Andbin....sei davvero un mostro!!! Io mi ci stavo scervellando....
Non avevo mai colto fino ad ora la grande funzionalità del typedef....wow...ti ringrazio ank'io!!!! Bravo!!!!
Baronerosso9 è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2007, 07:28   #6
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Baronerosso9 Guarda i messaggi
Mi*chia... Andbin....sei davvero un mostro!!! Io mi ci stavo scervellando....
Non avevo mai colto fino ad ora la grande funzionalità del typedef....wow...ti ringrazio ank'io!!!! Bravo!!!!
infatti anche io la uso poco, di solito solo per definire nuovi tipi semplici, invece in questo caso mi sembra l´unica soluzione.

Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
non ho ben capito cosa devi fare ,ma sembra interessante.
comunicazione tra client-server dove quasi ogni client e´ anche server e viceversa, perche´ inseriti in un catena
client -> server/client <-> server/client <-> ... <-> db

Ogni comunicazione e´ gestita da sistemi a stati (state machines) e nonostante abbiano fatto un ottimo lavoro di basso livello (send/recv msg, liste etc ... io sono entrato a meta´ progetto), la gestione medio alto livello e´ fatta male, secondo me. L´ho fatto notare e m´han detto che non hanno trovato una soluzione valida. Abbiamo quindi queste state machines enormi, illeggibili, difficili da modificare.

Sarebbe bastato una diverso stile, secondo me, perche´ lo stesso tipo che ha fatto un ottimo lavoro di basso livello, quando deve fare per esempio un send ACK, copia e incolla il codice ovunque, usando le sue funzioni, senza creare un' altra funzione di medio livello tipo sendACK(). E non ho capito perche´ (io le ho fatte ma non le ha usate lo stesso)

Quindi ho pensato di creare un sistema che permette di "viaggiare" tra gli stati in maniera dinamica (recentemente abbiamo avuto l´esigenza di aggiungere uno stato e non e´ stato facile modificare il sorgente).

Quindi, ho pensato, in una matrice abbiamo, in verticale, gli stati, in orizzontale tutti le azioni per ogni stato e ogni azione e´ una funzione.
Ogni funzione setta il nuovo livello (orizzontale) e, se serve, il nuovo stato.

Non posso sapere quanti stati ci saranno tantomeno quante azioni ogni stato dovra´ avere, quindi l´unica via mi sembra quella di una matrice dinamica di puntatori a funzione.

Non so se mi sono capito bene

Se qualcuno ha altre idee ben vengano
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2007, 08:19   #7
mastoo
Member
 
Iscritto dal: Apr 2006
Città: V.E. (na)
Messaggi: 115
giusto per curiosità
ma
Codice:
void (*(**x))()
questo non è un vettore bidimensionale di puntatori a funzione che ritorna un void
corregetemi se sbaglio
mastoo è offline   Rispondi citando il messaggio o parte di esso
Old 11-08-2007, 13:14   #8
Baronerosso9
Junior Member
 
Iscritto dal: Aug 2007
Messaggi: 22
Quote:
Originariamente inviato da mastoo Guarda i messaggi
giusto per curiosità
ma
Codice:
void (*(**x))()
questo non è un vettore bidimensionale di puntatori a funzione che ritorna un void
corregetemi se sbaglio
penso che basti questo:

void (**x)();
Baronerosso9 è offline   Rispondi citando il messaggio o parte di esso
Old 13-08-2007, 07:10   #9
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Baronerosso9 Guarda i messaggi
penso che basti questo:

void (**x)();
le stavo provando un po tutte ma c´e´ poi da diventare matti nel cast della malloc. Alla fine anche se c´e´ una soluzione alternativa, la migliore rimane la typedef per leggibilita´
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 13-08-2007, 15:43   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
allora, ho scoperto che e´ una boiata:
Codice:
void (***x)();
...
x    = malloc( lines * sizeof(void**) );
...
x[i] = malloc( columns * sizeof(void*) );
ovviamente la typedef e´ la soluzione migliore a livello di leggibilita´, ma non era cosi´ assurda come sembrava.
Il primo * per dire che e´ un pointer, il secondo per dire che e´ array etc.
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2007, 10:00   #11
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
L´idea e´ piaciuta e mo´ tocca implementarla

Avrei un quesito su una cosa un po´ strana (per me almeno, e´ la prima volta che mi serve).

Sto creando una struttura in C a mo´ di classe C++ che ovviamente non puo´ contenere funzioni ma solo puntatori ad esse.
Ho creato una funzione che setta i puntatori di questa benedetta matrice di puntatori a funzione, ho inserito il puntatore
alla funzione nella struttura:
Codice:
void (*SetActions)( int Rows, int Columns, void** ppFuncs );
Adesso la domanda:
non c´e´ un modo per non dover assegnare al puntatore la funzione ogni volta che dichiaro una di queste strutture ma che sia automaticamente settato per default ?
In pratica mi manca il costruttore del C++ dove ci schiaffi tutto cio´ che ti serve all´inizio

Perche´ senno´ e´ inutile un puntatore ad una funzione esterna, la lascio esterna e le passo anche la struttura, tipo:
Codice:
void (*SetActions)( CommStruct* pStruct, int Rows, int Columns, void** ppFuncs );
tanto non mi caghera´ nessuno, tutti in ferie siete
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
Il nuovo Samsung Galaxy S26 FE non ha pi...
Anthropic firma 9,1 miliardi con un mine...
Reflect Orbital ammette: un telescopio d...
Meta ha lanciato la nuova app Facebook C...
Offerta lancio pazzesca per Pixel 11 Pro...
Questa è l'auto del futuro che so...
Google lancia i Pixel 11, Pixel Watch 5 ...
Microsoft sfida i cinesi: il nuovo model...
XPeng esagera: ecco la G9L, 5,1 m di lun...
SpaceX potrebbe tornare a utilizzare pia...
Quando l'IA allucina nei campi: il model...
La pubblicità di iPhone che indig...
NVIDIA prepara un LLM gigante da oltre m...
ESA e Arianespace avrebbero cancellato l...
I fari di alcune Tesla sono troppo lumin...
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: 21:46.


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