web-dev-qa-db-fra.com

Que sont les directives C ++ GSL?

Stroustrup a donné un discours l'année dernière sur sa GSL (Guideline Support Library). Il y a une implémentation par Micosoft à https://github.com/Microsoft/GSL . J'avais l'impression que le GSL était censé conseiller sur le mauvais style de codage et suggérer des améliorations.

À cette fin, j'ai installé le GSL de MSFT et créé un fichier C++:

#include <stdio.h>
#include <gsl.h>

int main()
{
        int *i = new int;
        puts("hello world");
} 

et l'a construit en utilisant le Makefile:

msft : msft.cc
        g++ -std=gnu++14 -I ../../src/GSL/include $^ -o $@

.PHONY : clean
clean :
        rm -f msft

De toute évidence, il y a une fuite de ressources dans le code causée par le "nouveau".

Alors maintenant, je suis confus.

  • Qu'est-ce que le GSL est censé réellement "faire"?
  • Où puis-je obtenir le vérificateur de code source qui avertit de la non-conformité aux directives? Stroustrup semblait impliquer qu'il existe réellement en tant qu'outil, mais est-ce le cas?
18
blippy

Guidelines Support Library (voir aussi gsl-lite comme alternative) est une bibliothèque C++ qui implémente certaines des fonctions et classes recommandées dans les C++ Core Guidelines . Un document contenant des conseils sur l'utilisation du C++ moderne. Il vaut la peine de lire ou de parcourir les directives de base C++ si vous souhaitez améliorer votre utilisation de C++. L'utilisation de la bibliothèque GSL est moins importante, mais pourrait être utile si vous vous retrouvez à implémenter du code qui s'y trouve déjà. Les directives de base C++ existent depuis quelques années maintenant, donc certaines choses, comme string_view, sont déjà disponibles (selon la version de C++ que vous compilez) et ne nécessitent pas de bibliothèque externe à utiliser.

7
ejgottl

Vous devez les utiliser comme suggéré dans le CppCoreGuidelines .

Lisez-les, comprenez comment cela s'applique à votre base de code/à vos habitudes/problèmes de programmation.

Visual Studio 2015 a plugins qui vous aident à vérifier si votre code se comporte bien selon GSL

4
Jepessen