Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta
Google ha appena rinnovato la sua celebre serie A con il Pixel 10a, lo smartphone della serie più conveniente se consideriamo il rapporto tra costo e prestazioni. Con il chip Tensor G4, un design raffinato soprattutto sul retro e l'integrazione profonda di Gemini, il colosso di Mountain View promette un'esperienza premium a un prezzo accessibile. E il retro non ha nessuno scalino
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-09-2008, 18:14   #1
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
[C] Strutture con campi assegnati con il punto

Salve a tutti,

stavo vedendo un modulo del kernel di Linux che ha una struttura così definita:
Codice:
static struct i2c_algorithm ov518_i2c_algo = {
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 14)
	.name =			"OV518 algorithm",
	.id =			I2C_ALGO_SMBUS,
#endif
	.smbus_xfer =		ov518_smbus_xfer,
	.algo_control =		ov51x_i2c_control,
	.functionality =	ov518_i2c_func,
};
Sebbene capisco che si stanno facendo delle assegnazioni dentro una struttura dichiarata lì nel modulo, volevo sapere che significato ha il "punto" prima di functionality, di algo_control, ecc.
Inoltre, perché si fa così?

E' forse la stessa cosa che si fa dopo aver dichiarato una struttura, e tramite il nome della variabile di quel tipo si mette il punto e si assegnano i valori?

Ovvero:
ov518_i2c_algo.functionality = ov518_i2c_func; ??

Grazie.
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2008, 18:30   #2
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Perchè se non fosse ostico e cripitco non lo avrebbero messo nel kernel linux

Cmq bisogna notare che prima della graffa c'è un uguale, e che le assegnazioni sono terminate da , invece che da ;... per cui quella la non è una definizione, ma un assegnamento.
Il .comunque non so a che serva...
__________________
*ToMmO*

devlog | twitter

Ultima modifica di Tommo : 23-09-2008 alle 18:35.
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2008, 18:49   #3
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Infatti non è una dichiarazione. Serve ad inizializzare solo certi campi (che nelle struct hanno un nome). Potrebbe essere una struct con 200 elementi e ne inizializzi solo il terzo (per esempio), se vuoi, con quella scrittura.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2008, 18:58   #4
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Ok, sul fatto che era una inizializzazione c'ero arrivato, ma quindi è una struttura dichiarata altrove? Ho visto che nel kernel (2.6.25) è definita in linux/i2c.h ma i campi non corrispondono.

Tipicamente io posso definire una una struttura in un file .h, poi in un mio file sorgente .c posso dichiararla come variabile, inizializzarla e usarla ecc..

Quando ci sono quei punti invece, che differenza c'è nell'utilizzo, a parte che è una inizializzazione di campi?
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2008, 19:06   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da fbcyborg Guarda i messaggi
Ok, sul fatto che era una inizializzazione c'ero arrivato, ma quindi è una struttura dichiarata altrove? Ho visto che nel kernel (2.6.25) è definita in linux/i2c.h ma i campi non corrispondono.
Ovvero? Quali sono le differenze?
Quote:
Originariamente inviato da fbcyborg Guarda i messaggi
Quando ci sono quei punti invece, che differenza c'è nell'utilizzo, a parte che è una inizializzazione di campi?
Che inizializzi al valore che vuoi tu solo taluni campi, gli altri sono azzerati:
Codice:
#include <stdio.h>

struct prova
{
  int primo;
  int secondo;
  int terzo;
};

int main()
{
  struct prova P = { .secondo = 10 };

  printf("P\n{\n\t.primo = %d;\n\t.secondo = %d;\n\t.terzo = %d;\n}\n", P.primo, P.secondo, P.terzo);
  return 0;
}
Restituisce:
Codice:
$ ./prova
P
{
        .primo = 0;
        .secondo = 10;
        .terzo = 0;
}
Anche se, in verità, non so quanto sia standard:
Codice:
gcc -W -Wall -ansi -pedantic main.c -o ./struct
main.c: In function 'main':
main.c:12: warning: ISO C90 forbids specifying subobject to initialize
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2008, 19:09   #6
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Grazie è chiarissimo l'esempio. Ora non ho più dubbi!
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Microsoft AI Tour Milano: dall'efficienz...
Asus ExpertBook Ultra: Intel Core Ultra ...
Intel presenta i processori desktop Core...
Un'AI ha trovato una falla critica in Wi...
OPPO Find N6 rivoluziona i foldable: add...
Enel, completata l'installazione di tutt...
Tutti abbandonano il Blu-ray ma Panasoni...
CL1: le prime installazioni di data cent...
Yoshi and the Mysterious Book: annunciat...
CATL frena sulle batterie a stato solido...
NIO, ecco il profitto nel quarto trimest...
iRobot Roomba Mini: il robot aspirapolve...
Manda le DDR5 in assistenza, il venditor...
Scope elettriche lavapavimenti di marca ...
Delle oltre 750.000 offerte solo il 2% &...
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: 16:09.


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