30/04/2018
La Guidelines Support Library (GSL) es una librería de C++ que proporciona funciones y tipos recomendados por las C++ Core Guidelinesde la Standard C++ Foundation. Esta tutorial te mostrará cómo configurar tu entorno de desarrollo para usarla eficazmente.

¿Qué es la GSL?
La GSL ofrece una variedad de herramientas que mejoran la seguridad y la expresividad del código C++. Entre sus componentes más importantes se encuentran:
- span: Un visor sobre una secuencia contigua de memoria con comprobación de límites.
- not_null: Un puntero o puntero inteligente que garantiza que no sea nulo.
- Expects y Ensures: Para definir pre y postcondiciones, facilitando la depuración.
- Tipos de cadenas seguras:
zstring,u16zstring,u32zstring, etc., que manejan la terminación nula de forma segura. - Manejo de recursos RAII: Facilita el manejo de recursos como la memoria con
unique_ptryshared_ptr.
Es importante destacar que la implementación de GSL es inline, lo que significa que el código está incluido directamente en los encabezados, sin necesidad de enlazar archivos de biblioteca adicionales.
Configuración del entorno
La configuración dependerá de tu sistema operativo y compilador. Aquí te mostramos los pasos para los compiladores más comunes:
Instalación (si es necesario)
La GSL se puede obtener a través de varios métodos. Uno es clonar el repositorio de GitHub de Microsoft:
- Clonar el repositorio:
git clone https://github.com/microsoft/GSL.git - Navegar al directorio:
cd GSL
Otra opción es usar un gestor de dependencias como vcpkg :
- Instalar vcpkg: Sigue las instrucciones en la página oficial de vcpkg.
- Integrar vcpkg:
./vcpkg integrate install - Instalar GSL:
vcpkg install ms-gsl
Inclusión de encabezados
Una vez instalada (o descargada), solo necesitas incluir el encabezado principal de la GSL en tu código:
#include <gsl/gsl>Esto te dará acceso a todas las funciones y tipos de la librería. Si solo necesitas un componente específico, puedes incluir el encabezado correspondiente (ej: #include <gsl/span>).
Configuración del compilador (GCC, Clang)
Si utilizas GCC o Clang, debes agregar la ruta de inclusión al directorio includede GSL a la variable de entorno INCLUDEo usando la opción -Ien la línea de comandos:
g++ -I/ruta/a/GSL/include mi_programa.cpp -o mi_programaReemplaza /ruta/a/GSL/includepor la ruta real del directorio includede tu instalación de GSL.
Configuración del compilador (MSVC)
En MSVC, debes agregar la ruta de inclusión a las propiedades del proyecto. En Visual Studio, ve a las propiedades del proyecto, luego a "C/C++" -> "General" y agrega la ruta en "Directorios de inclusión adicionales".
CMake
CMake facilita la integración de GSL en tus proyectos. Puedes usar find_packageo FetchContent:
Utilizando find_package:
find_package(Microsoft.GSL CONFIG REQUIRED)target_link_libraries(mi_proyecto PRIVATE Microsoft.GSL::GSL)Utilizando FetchContent:
include(FetchContent)FetchContent_Declare( GSL GIT_REPOSITORY https://github.com/microsoft/GSL GIT_TAG v0)FetchContent_MakeAvailable(GSL)target_link_libraries(mi_proyecto PRIVATE GSL::GSL)Ejemplos de uso
Aquí te mostramos algunos ejemplos simples de cómo utilizar algunas de las funciones de GSL:
Uso de span:
#include <gsl/gsl>#include <iostream>int main() { int arr[] = {1, 2, 3, 4, 5}; gsl::span<int> s(arr); for (int i = 0; i < s.size(); ++i) { std::cout << s[i] << " "; } std::cout << std::endl; return 0;}Uso de not_null:
#include <gsl/gsl>#include <iostream>int main() { int x = 10; gsl::not_null<int> ptr = &x; std::cout << ptr << std::endl; return 0;}Uso de Expects:
#include <gsl/gsl>#include <iostream>int divide(int a, int b) { Expects(b != 0); return a / b;}int main() { std::cout << divide(10, 2) << std::endl; //std::cout << divide(10, 0) << std::endl; //Esto generará una excepción return 0;}Solución de problemas
Si tienes problemas al configurar GSL, revisa lo siguiente:
- Rutas de inclusión: Asegúrate de que las rutas de inclusión de tu compilador apuntan al directorio
includede GSL. - Versiones del compilador: GSL requiere un compilador que soporte C++14 o superior.
- Dependencias: Si estás usando un gestor de dependencias, asegúrate de que esté correctamente configurado e instalado.
Recuerda consultar la documentación oficial de GSL para obtener información más detallada y actualizada.
Tabla Comparativa de Compiladores
| Compilador | Requisitos | Instrucciones de configuración |
|---|---|---|
| GCC | C++14 o superior | g++ -I/ruta/a/GSL/include mi_programa.cpp -o mi_programa |
| Clang | C++14 o superior | clang++ -I/ruta/a/GSL/include mi_programa.cpp -o mi_programa |
| MSVC | C++14 o superior | Agregar la ruta de inclusión en las propiedades del proyecto. |
Si quieres conocer otros artículos parecidos a Cómo configurar tu entorno c++ con la librería gsl puedes visitar la categoría Libros y Librerías.
