"C++ GSL指南"是什么?

bli*_*ppy 19 c++ guideline-support-library

去年,Stroustrup就他的GSL(指南支持图书馆)发表了演讲.Micosoft在https://github.com/Microsoft/GSL上实现了一个实现.我的印象是GSL应该建议糟糕的编码风格,并提出改进建议.

为此,我安装了MSFT的GSL并创建了一个C++文件:

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

int main()
{
        int *i = new int;
        puts("hello world");
} 
Run Code Online (Sandbox Code Playgroud)

并使用Makefile构建它:

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

.PHONY : clean
clean :
        rm -f msft
Run Code Online (Sandbox Code Playgroud)

显然,由"新"引起的代码中存在资源泄漏.

所以现在我很困惑.

  • 什么是GSL应该实际"做"?
  • 我在哪里可以获得警告指南不合规的源代码检查器?Stroustrup似乎暗示它实际上是作为一种工具存在的,但情况是这样吗?

ejg*_*ttl 7

准则支持库(也参见GSL-精简版作为替代)是一个C ++库实现一些在所建议的函数和类C ++核心准则。有关如何使用现代C ++的建议的文档。如果您想改善对C ++的使用,则值得阅读或略读C ++核心准则。使用GSL库的重要性不那么重要,但是如果您发现自己已经实现了其中的代码,则可能会很有用。C ++核心准则已经存在了几年,因此有些东西(例如string_view)已经可用(取决于要编译的C ++版本),并且不需要使用外部库。

  • 请注意,只有一半甚至更少的指南会改进您的 C++。另一半只会让事情变得更糟。 (3认同)
  • 怎么样? (2认同)
  • @PabloAriel 考虑到编写这些指南的人的专业知识,您在这里做出的声明相当大胆。请至少给我一些使你的 C++ 编码变得更糟的指南以及你为什么这么认为。 (2认同)

Jep*_*sen 5

您必须按照CppCoreGuidelines中的建议使用它们。

阅读它们,了解它如何应用于您的代码库/编程习惯/问题。

Visual Studio 2015 有一些插件可以帮助您检查代码是否按照 GSL 正常运行