2016-05-02 1 views
8

В прошлом году Страуструп рассказал о своей GSL (справочной библиотеке поддержки). Существует реализация Micosoft по адресу https://github.com/Microsoft/GSL. У меня создалось впечатление, что GSL должен был посоветовать плохой стиль кодирования и предлагать улучшения.Что такое «руководящие принципы C++ GSL»?

Для этого я установил GSL MSFT и создан файл C++:

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

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

и построил его с помощью Makefile:

msft : msft.cc 
     g++ -std=gnu++14 -I ../../src/GSL/include $^ -o [email protected] 

.PHONY : clean 
clean : 
     rm -f msft 

Очевидно, что существует утечка ресурсов в коде вызывается «новым».

Итак, теперь я в замешательстве.

  • Что такое GSL, который должен фактически «делать»?
  • Где я могу получить средство проверки исходного кода, предупреждающее о несоблюдении рекомендаций? Строуструп, казалось, подразумевал, что он фактически существует как инструмент, но так ли это?
+0

хорошо, по крайней мере, они честны .. «предполагает платформу, которая реализует поддержку C++ 14. Существуют определенные способы обхода решений для поддержки MSVC 2013 и 2015 годов». Справедливости ради, я понимаю, что для поддержки C++ 11 им необходимо полностью перестроить весь свой компилятор ... но прошло уже 5 лет, и у них все еще есть фундаментальные недостатки. Выражение sfinae? не поддерживается. – xaxxon

+1

Я не считаю, что это близко подходит. Этот вопрос спрашивает, как использовать GSL, что является отличным вопросом StackOverflow. Он только запрашивает рекомендацию для инструмента, проходящего в последней точке пули, которая может быть тривиально удалена. –

ответ

2

Вы должны использовать их, как предложено в CppCoreGuidelines.

Прочтите их, поймите, как это относится к вашим привычкам/проблемам с использованием кода/программирования.

Visual Studio 2015 имеет plugins, который поможет вам проверить, если ваш код ведет себя хорошо в соответствии с GSL

0

Guidelines Support Library (смотри также gsl-lite в качестве альтернативы) является C++ библиотека, которая реализует некоторые из функций и классов, рекомендованных в C++ Core Guidelines. Документ с советом о том, как использовать современный C++. Для повышения эффективности использования C++ стоит прочитать или скрыть основные принципы C++. Использование библиотеки GSL менее важно, но может быть полезно, если вы обнаружите, что реализуете уже существующий код. Руководящие принципы C++ Core работают уже несколько лет, поэтому некоторые вещи, такие как string_view, уже доступны (в зависимости от того, какую версию C++ вы компилируете) и не требуют использования внешней библиотеки.