|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2012
Messaggi: 9
|
[C] operazioni sui bit
Salve a tutti, vi scrivo per sottoporvi una questione :cercando di costruire delle maschere di bit mi sono imbattuto in un errore da cui non riesco a venir fuori. Io dichiaro due costanti
Codice:
#define CREATE 00001000; #define OPEN 00002000; Codice:
flag = (CREATE | OPEN); Codice:
error: expected ‘)’ before ‘;’ token Codice:
error: lvalue required as unary ‘&’ operand Grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Il tuo codice viene espanso in:
Codice:
flag = (00001000; | 00002000;); |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jan 2012
Messaggi: 9
|
Innanzitutto grazie per la risposta. Il tentativo l'ho fatto anche in esadecimale, con lo stesso esito. Ho preso quella definizione guardando le definizioni di Linux per i flag nelle aperture dei file o nell'utilizzo dei semafori. Quindi l'errore sarebbe nell'espansione, ma ciò deriva dalla definizione. Mi basta rimuovere il punto e virgola finale?
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
Questo perchè con la direttiva #define stai dando istruzioni al preprocessore, istruzioni che non sono proprie del linguaggio.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2013
Città: Nel cuore dell'8 Mile di Detroit
Messaggi: 3972
|
le parentesi non sono necessarie
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Jan 2012
Messaggi: 9
|
Grazie mille.. Effettivamente era una banalità, però è uno di quei casi in cui cerchi l'errore più assurdo e non ti concentri sul semplice!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:00.




















