Pregunta:
ID no calificado esperado antes de la constante numérica
Dudamesh 192
2017-05-29 07:59:29 UTC
view on stackexchange narkive permalink

Después de depurar y tener algunas declaraciones conflictivas sobre pines analógicos, finalmente pensé que estaba hecho, después de compilar recibí este error:

  32: 0,1: 31: 12: error: Se esperaba unqualified-id antes de la constante numérica2: 5: nota: en la expansión de la macro 'B1'  

No puedo entender lo que esto significa. ¿Qué pasa con mi código aquí abajo?

  // no me juzgues si es demasiado largo y complicado: P todavía soy nuevo xDint AA1 = 0; int B1 = 1; int C1 = 2; int D1 = 3; int AA2 = 4; int B2 = 5; int C2 = 6; int AA3 = 8; int B3 = 9; int C3 = 10; int D3 = 11; int B4 = 12; int C4 = 13; int sec = 0; int min1 = 0; int min2 = 0; int hour1 = 8; bool hour2 = 0; void setup () {pinMode (AA1, OUTPUT); pinMode (B1, SALIDA); pinMode (C1, SALIDA); pinMode (D1, SALIDA); pinMode (AA2, SALIDA); pinMode (B2, SALIDA); pinMode (C2, SALIDA); pinMode (AA3, SALIDA); pinMode (B3, SALIDA); pinMode (C3, SALIDA); pinMode (D3, SALIDA); pinMode (B4, SALIDA); pinMode (C4, SALIDA);} bucle vacío () {SalidaOn (); retraso (1000); sec ++; si (seg == 60) {seg = 0; min1 ++; si (min1 == 10) {min1 = 0; min2 ++; si (min2 == 6) {min2 = 0; hour1 ++; if (hora1 == 10) {hora1 = 0; hora2 = 1; } si (hora2 == 1, hora1 == 3) {hora1 = 1; hora2 = 0; }}}}} void OutputOn () {digitalWrite (B1, LOW); escritura digital (C1, BAJA); digitalWrite (D1, BAJO); escritura digital (A2, BAJA); digitalWrite (B2, BAJO); digitalWrite (C2, BAJO); escritura digital (A3, BAJA); digitalWrite (B3, BAJO); escritura digital (C3, BAJA); escritura digital (D3, BAJA); digitalWrite (B4, BAJO); digitalWrite (C4, BAJO); if (min1 == 1) {digitalWrite (AA1, HIGH); } if (min1 == 2) {digitalWrite (B1, HIGH); } if (min1 == 3) {digitalWrite (B1, HIGH); escritura digital (AA1, ALTA); } if (min1 == 4) {digitalWrite (C1, HIGH); } if (min1 == 5) {digitalWrite (C1, HIGH); escritura digital (AA1, ALTA); } if (min1 == 6) {digitalWrite (D1, HIGH); escritura digital (B1, ALTA); }
if (min1 == 7) {digitalWrite (D1, HIGH); escritura digital (AA1, ALTA); escritura digital (B1, ALTA); } if (min1 == 8) {digitalWrite (D1, HIGH); } if (min1 == 9) {digitalWrite (D1, HIGH); escritura digital (AA1, ALTA); } if (min2 == 1) {digitalWrite (AA2, HIGH); } if (min2 == 2) {digitalWrite (B2, HIGH); } if (min2 == 3) {digitalWrite (B2, HIGH); escritura digital (AA1, ALTA); } if (min2 == 4) {digitalWrite (C2, HIGH); } if (min2 == 5) {digitalWrite (C2, HIGH); escritura digital (A2, ALTA); } if (min2 == 6) {digitalWrite (C2, HIGH); escritura digital (B2, ALTA); } si (hora1 == 1) {escritura digital (AA3, ALTA); } si (hora1 == 2) {escritura digital (B3, ALTA); } if (hora1 == 3) {escritura digital (B3, ALTA); escritura digital (AA3, ALTA); } if (hora1 == 4) {escritura digital (C3, ALTA); } if (hora1 == 5) {escritura digital (C3, ALTA); escritura digital (AA3, ALTA); } si (hora1 == 6) {escritura digital (C3, ALTA); escritura digital (B3, ALTA); } si (hora1 == 7) {escritura digital (C3, ALTA); escritura digital (AA3, ALTA); escritura digital (B3, ALTA); } if (hora1 == 8) {escritura digital (D3, ALTA); } if (hora1 == 9) {escritura digital (D3, ALTA); escritura digital (C3, ALTA); } si (hora2 == 1) {escritura digital (B4, ALTA); escritura digital (C4, ALTA); }}  

Se supone que es el código de un reloj (si no fuera lo suficientemente obvio) conectado a 4 decodificadores de 7 segmentos, también conectados a 4 pantallas LED de 7 segmentos.

En general, al escribir en C, "macro" debería ser un gran indicio de que tiene un problema relacionado con `# define`. Errores extraños al decir cosas que no son lo que escribiste: problema que involucra `# define`.
One responder:
Jot
2017-05-29 09:20:42 UTC
view on stackexchange narkive permalink

Mala suerte. Hay un archivo dentro de Arduino llamado "binary.h", y contiene una definición llamada "B1". Lo que significa que no puede utilizar "B1" como variable. En mi opinión, ese archivo "binary.h" es totalmente innecesario.

En las preferencias puede activar la salida adicional para el compilador y activar los números de línea. El compilador dirá qué está mal, pero debes saber cómo lo hace el compilador. El primer error del compilador es el más importante.

" ... / hardware / arduino / avr / cores / arduino / binary.h: 31: 12: error: esperado unqualified-id antes numérico constante #define B1 1 "significa que el compilador estaba leyendo el archivo" binary.h "y en la línea 31 notó algo que no entendía y tiene que ver con" B1 ".

¿Entonces tengo que no usar B1?
Correcto. La B inicial con ceros y unos se usa para constantes binarias: https://www.arduino.cc/en/Reference/IntegerConstants Como es un número pin, puede llamar a la variable "const B1Pin = 1;" o incluso "const TheyToldMeAtStackExchangeNotToCallThisB1 = 1;"
Mento: "const int B1Pin = 1;". Lo siento, olvidé el 'int'. La palabra clave 'const' no es necesaria, le dice al compilador que es un número constante y no cambia.


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...