En general, he ignorado el uso de macros al escribir en C, pero creo que conozco los fundamentos sobre ellas. Mientras estaba leyendo el código fuente de la lista en el núcleo de Linux, vi algo así:Expansión de macro C en el código de kernel de Linux
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
(Se puede acceder a la parte restante del código de here.)
no entendía la función de ampersands (no creo que sean la dirección de los operandos aquí) en LIST_HEAD_INIT y, por lo tanto, el uso de LIST_HEAD_INIT en el código. Apreciaría si alguien puede iluminarme.
@ unicornaddict consideré el escenario similar antes de hacer esta pregunta. Pero recibí un error cuando probé este código: http://pastebin.com/P2cCfNbQ. Traté de dar vacío, int, macro, etc ... y obtuve errores en esas condiciones también. – systemsfault
@holydiver: He actualizado mi respuesta con un enlace a ** ejemplo de trabajo ** y también he señalado el error en * su * código. – codaddict
gracias ahora realmente lo tengo. – systemsfault