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
“`
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
aObject
es una posible solución. Al hacer esto, el preprocesador no interferirá con la definición delambda
ya que no transformaráobject
enobject()
. Luego, puedes definirlambda
como(std::function<object(object, const="" char*)="">)[]()
sin ningún problema.</object(object,>