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.

Definiciones del preprocesador de C++ en conflicto.


<h1>definir objeto objeto() // objeto -> objeto()</h1> <h1>definir ninguno objeto // ninguno -> objeto -> objeto()</h1> <h1>definir lambda (std::function<*>)<a href=""></a> // ¿CÓMO?!, lambda -> (std::function<objeto(objeto, const char)>)<a href=""></a></h1> <p>```</p> <h4>El problema:</h4> <code>#definir objeto objeto() // objeto -> objeto()</code> cambia <code>objeto</code> a <code>objeto()</code>. Lo que quiero hacer es : <code>lambda</code> -> <code>(std::function)[]()</code>. Pero debido a mis macros anteriores, <code>objeto</code> se convierte en <code>objeto()</code>. Así que tengo : <code>(std::function)[]()</code> ¿Hay una forma más inteligente de hacer esto, tal vez usando <code>#ifdef</code> o algo así? Nunca antes he usado macros del preprocesador, así que tal vez estoy haciendo todo mal. Parece que no importa cuál de ellos <code>#definir</code> primero. RESPUESTA: He cambiado el nombre de la clase de <code>objeto</code> a <code>Objeto</code>

definir objeto Objeto() // objeto -> Objeto()

definir ninguno objeto // ninguno -> objeto -> Objeto()

definir lambda (std::function)

// ahora el preprocesador no tiene nada que cambiar y todo funciona bien
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo verificar la validez del código, pero parece que cambiar el nombre de la clase de object a Object es una posible solución. Al hacer esto, el preprocesador no interferirá con la definición de lambda ya que no transformará object en object(). Luego, puedes definir lambda como (std::function<object(object, const="" char*)="">)[]() sin ningún problema.</object(object,>

Comments are closed.