es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sintaxis inusual para una directiva #define.

En un boceto que encontré, encontré la siguiente instrucción:

define USB_CONFIG_POWER_MA (mA) ((mA) / 2)

Y quiero asegurarme de no cometer ningún error: ¿por qué hay dos “mA”?

¿Cuál debo reemplazar por un valor dado que en una versión anterior de este código solo se necesitaba esta línea:

define USB_CONFIG_POWER_MA (20)

para establecer el máximo en 20 mA, pero ahora da un error de compilación:

/home/henry/arduino-1.8.16/hardware/arduino/avr/cores/arduino/USBCore.h:99:29: error: “20” no puede aparecer en la lista de parámetros de macros

Esta parece ser la solución ya que no me da error de compilación,

#define USB_CONFIG_POWER_MA(mA) ((40)/2)

¡pero nuevamente quiero estar seguro!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Los dos “mA” en la línea original son parte del nombre del parámetro. El primer “mA” solo es el nombre del parámetro que se está pasando a la macro, y el segundo “mA” es parte de la sintaxis utilizada para dividir el valor pasado por 2.

    En el segundo fragmento de código, se omite el nombre del parámetro y se pasa directamente un valor específico de 20 a la macro. Sin embargo, esto no está permitido porque falta el nombre del parámetro.

    En el último fragmento de código, se incluye una vez más el nombre del parámetro y se pasa un valor de 40, lo que dará como resultado una potencia máxima de 20 mA (ya que se divide por 2 dentro de la macro). Esto debería ser una sustitución válida para la línea original.

Comments are closed.