quiero usar nftw para atravesar una estructura de directorios en C.Cómo evitar el uso de variables globales cuando se utiliza nftw
Sin embargo, teniendo en cuenta lo que quiero hacer, no veo una forma de evitar el uso de una variable global.
Los ejemplos de libros de texto de using (n) ftw implican hacer algo así como imprimir un nombre de archivo. En cambio, quiero tomar la ruta de acceso y la suma de comprobación del archivo y ubicarlos en una estructura de datos. Pero no veo una buena manera de hacerlo, dados los límites de lo que se puede pasar a nftw.
La solución que estoy utilizando implica una variable global. La función llamada por nftw puede acceder a esa variable y agregar los datos requeridos.
¿Hay alguna forma razonable de hacerlo sin usar una variable global?
Conocía los méritos de hacer gran parte del aislamiento del código, ya que la biblioteca BSD "libarchive" (que también estoy usando) está configurada de esa manera. Pero su comentario ayudó a reforzar el problema, y utilizaré la palabra clave estática de manera más prolífica como resultado. (Lo recomendaría si pudiera). – user1071847
El artículo [Pox on globals] (http://www.eetimes.com/discussion/break-point/4025723/A-pox-on-globals) lo he vinculado en su publicación anterior también discute esta técnica. Que el artículo se refiere a sistemas integrados, pero no es menos aplicable a la informática de propósito general. También sugeriría que C++ le brinde más oportunidades para una mejor encapsulación de datos mediante el uso de clases y espacios de nombres. Algunas precauciones sobre el uso de estática de esta manera, está bien si solo necesita una instancia de los datos, y resulta en código no reentrante y no seguro para subprocesos. Se pueden aplicar otras soluciones. – Clifford