En C++ se podría usar el espacio de nombres para mantener a los grupos independientes trabajando en la misma base de código creando inadvertidamente funciones con el mismo nombre y creando así un conflicto. Mi pregunta es, antes de que la idea de espacio de nombres que sale, cómo podría emular un espacio de nombres en C.¿Cómo se puede emular el espacio de nombres en C?
12
A
Respuesta
18
Por nombrar las cosas de manera diferente, por ejemplo:
void namespace_group_function();
gtk+ es un buen ejemplo de este estilo convencional:
GtkWidget* gtk_window_new(GtkWindowType type);
2
Para los símbolos no exportados, ponga cada módulo en un archivo separado.
Para los símbolos exportados generalmente se aplica un prefijo. Dos o tres letras son comunes.
6
Use un prefijo común para los nombres de todos sus símbolos públicos, por lo que foo::bar
se convierte en . lanzar un prefijo en todos los nombres de símbolos es esencialmente lo que hacen los espacios de nombres. (y también para resolver símbolos usados sin el prefijo para las declaraciones que tienen el prefijo, que es bastante útil)
Cuestiones relacionadas
- 1. ¿Para qué se usa el espacio de nombres en C++?
- 2. C++ Espacio de nombres pregunta
- 3. ¿Cómo se muestra el espacio de nombres en UML?
- 4. Problema de espacio de nombres en C++
- 5. No se puede encontrar espacio de nombres System.Web.UI.DataVisualization.Charting
- 6. Espacio de nombres enfrentadas en C++
- 7. Constante de espacio de nombres en C#
- 8. ¿Cómo puedo definir amigos en el espacio de nombres global dentro de otro espacio de nombres C++?
- 9. ¿Cómo hacer espacio de nombres en lua?
- 10. C#, 'Forms' no existe en el espacio de nombres system.windows
- 11. principal en el espacio de nombres
- 12. incluyen y el uso de espacio de nombres en C++
- 13. No se puede establecer el espacio de nombres predeterminado en Android XmlSerializer
- 14. C++ Espacio de nombres dolores de cabeza
- 15. Espacio de nombres Xml y C# csproj
- 16. Obtener el espacio de nombres del archivo xml C#
- 17. Acceso espacio de nombres de los padres en C++
- 18. cómo usar el espacio de nombres Yii
- 19. espacio de nombres 'SharePoint' no existe en el espacio de nombres 'Microsoft'
- 20. System.DirectoryServices no se reconoce en el 'Sistema' espacio de nombres
- 21. Convenciones de alias de tipo/espacio de nombres en C#
- 22. El tipo o espacio de nombres 'LINQ' no existe en el espacio de nombres 'System.Data', etc
- 23. Métodos dentro del espacio de nombres C#
- 24. ¿Cómo agregar espacio de nombres en el archivo aspx?
- 25. En C++, ¿qué es un "alias de espacio de nombres"?
- 26. C++ - Espacio de nombres vs. funciones estáticas
- 27. :: sin espacio de nombres
- 28. ¿Cómo traducir el modelo en el espacio de nombres?
- 29. Cómo usar el espacio de nombres en varios archivos
- 30. Manejando modelos de espacio de nombres (clases) en el espacio de nombres
Funciona para aislar grupos independientes, pero no es compatible con Argument Dependent Lookup y aliasing del espacio de nombres. –
Me gusta mucho el hecho de que el prefijo de la biblioteca para las clases es CamelCased, mientras que está subrayado para las funciones. Mantiene las cosas bien y consistentes. –