Bisogno di chiarimenti assegnazione nome ingresso

Ciao a tutti.
Ho un dubbio che la compilazione non mi ha tolto perchè non ha rilevato errori!!!
In un esempio ho trovato una assegnazione di ingresso del tipo "const byte MioIngr(10);" quindi diverso dal solito "const byte MioIngr = 10;" piuttosto che un #DEFINE.....
Qualcuno sa dirmi come e se funziona? Grazie

Aggiungo che ho testato la dichiarazione in uno sketch semplice senza nessuna libreria e funziona.
Si carica ed opera seguendo le dichiarazioni
ciao

Questa non l'avevo mai vista. Pensavo non fosse corretta, invece compila.

Questa invece è sicuramente corretta, così come la #DEFINE.

sarebbe utile sapere se è standard di programmazione così da poterla utilizzare senza incorrere in successivi intoppi se cambiasse la versione del compilatore.
Chi può darci questa risposta?

2.4 Dichiarazioni
Tutte le variabili, prima di essere utilizzate, devono essere state dichiarate, anche se alcune dichiarazioni possono essere fatte in modo implicito nel contesto. Una dichiarazione specifica un tipo, e contiene una lista di una o più variabili di quel tipo, come

int lower, upper, step;
char c, line[1000];

Le variabili possono essere distribuite in modi diversi; le liste dell’esempio precedente sono equivalenti a

int lower;
int upper;
int step;
char c;
char line[1000];

Quest’ultima forma occupa uno spazio maggiore, ma è utile se si devono aggiungere commenti ad ogni dichiarazione o se si devono apportare modifiche successive.
Nella dichiarazione, una variabile può anche essere inizializzata. Se il nome è seguito dall’operatore = e da un’espressione, allora quest’ultima è l’entità inizializzante, come in

char esc=’\\’;
int i=0;
int limit=MAXLINE+1;
float eps=1.0e-5;

Se la variabile non è automatica, l’inizializzazione viene fatta una volta sola, concettualmente prima dell’inizio dell’esecuzione del programma, e l’entità inizializzante dev’essere un’espressione costante. Una variabile automatica inizializzata esplicitamente viene inizializzata ogni volta che si entra nella funzione o, comunque, nel blocco che la contiene; in questo caso, l’entità inizializzante può essere un’espressione qual-siasi. Le variabili esterne e quelle statiche sono inizializzate, per default, a zero. Le variabili automatiche non esplicitamente inizializzate contengono valori indefiniti.
Il qualificatore const può essere applicato alla dichiarazione di qualsiasi variabile, per specificare che quel valore non verrà mai alterato. Per un vettore, il qualificatore const dichiara che nessun elemento del vettore verrà modificato.

const double e=2.71828182845905;
const char msg[]=”warning”;

La dichiarazione const può essere usata anche per i vettori passati come argomenti, per indicare che la funzione chiamata non altera il vettore:
int strlen(const char[]);
Se si tenta di modificare un oggetto dichiarato const, il risultato dipende dall’implementazione adottata sulla macchina in uso.

Questo è il paragrafo del K&R sulle dichiarazioni... non fa riferimento alla sintassi con le parentesi...
In ogni caso, se passa uno di quelli bravi saprà essere più preciso di me.

A quanto pare è spiegato nel REFERENCE. Non è altro che l'equivalente di scrivere byte a = 10 presumo sia solo una macro di Arduino.

@nickcycle : Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

Guglielmo

Non si tratta di nessuna macro!
Tendiamo a dimenticare che il compilatore usato con Arduino IDE è il C++ (nonostante si consiglino sempre manuali del C :laughing:) ed in C++ quella forma di scrittura è uno dei possibili modi di inizializzare le variabili.
E' possibile anche usare le parentesi graffe ad esempio.


const byte MioIngr=10;
const byte MioIngr(10);
const byte MioIngr{10};
1 Like

Ho imparato una cosa nuova

? - leggo dall'intestazione image
quindi mi pare che sia una sezione italiana anche se nel ramo "international" . In ogni caso una puntualizzazione non fa male e ne terrò debito conto in qualche discussione futura. Grazie

Grazie a tutti. Mi sento parte di una grande forza!!!! Ciao

Nel ramo "International" ci sono le sezioni delle varie lingue ... Tedesco, Spagnolo, Francese, Indiano, Italiano, Olandese, Portogese, Russo e Scandinavo, poi c'è il forum in generale (con le sue sezioni e sottosezioni) che è TUTTO solo in Inglese.

Guglielmo

OK. Riassumo per la prossima volta(mi sto impratichendo!!). Se voglio scrivere in italiano mi devo fermare al livello "italiano" perchè se entro nel livello "Generale" DEVO parlare in inglese. è un pò contorto perchè Generale sembra un sottolivello di Italiano ma ce la posso fare!!! Paese che vai usanze che trovi! grazie e ciao

@nickcycle : NO, non hai proprio capito ...

... esiste una sezione, chiamiamo "generica" del forum, che comprende aree specifiche (es. legate alle singole schede Arduino) ed aree più generiche, poi esiste la sezione Iternational. Nella sezione "generica" del forum è ammesso SOLO l'Inglese.

Nella sezione International ci sono delle sotto sezioni relative alle varie lingue, tu li scegli la lingua in cui vuoi scrivere ed entri in quella sezione.

Una volta entrato in una sezione, ci sono altre sottosezioni, DEVI scegliere quella più corretta per i tuoi thread e scrivere in essa.

Se entri in Italiano puoi scegliere se aprire un thread in sezione "Generale", in sezione "Software" o in sezione "Hardware", NON è permesso aprire thread nella sezione "Megatopic". In ogni caso, essendo delle sottosezioni dell'Italiano, DEVI scrivere in Italiano.

Più chiaro così ? ... lo hai letto con attenzione il REGOLAMENTO ?

Guglielmo

Allora non ho capito il tuo primo messaggio. Se siamo in "Italiano" nella sezione "Generale" perchè dovevo scrivere in inglese? O, inavvertitamente, ho aperto qualcosa in qualche altro posto? Se è così purtroppo è dovuto alla mia inesperienza e/o al "tremulo click". Il regolamento non l'ho letto (mea culpa!!!) e provvedo in tempi brevi. grazie per il link.
Nicola

Scusami!!!!! Ora è più chiaro!!!! il thread è qui NON grazie a me ma grazie alla buona volontà di un altra persona(che ringrazio). Pensavo di averlo attivato io in questa area!!!
Ciao

1 Like