【问题标题】:What "are" the C++ GSL guidelines?什么是 C++ GSL 指南?
【发布时间】:2016-05-02 11:07:20
【问题描述】:

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");
} 

并使用 Makefile 构建它:

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

.PHONY : clean
clean :
        rm -f msft

显然,代码中存在由“new”引起的资源泄漏。

所以现在我很困惑。

  • GSL 应该实际“做什么”?
  • 我在哪里可以得到源代码检查器,它会警告准则不合规? Stroustrup 似乎暗示它实际上是作为一种工具存在的,但真的是这样吗?

【问题讨论】:

  • 好吧,至少他们是诚实的..“假设一个实现 C++14 支持的平台。有特定的解决方法来支持 MSVC 2013 和 2015。”公平地说,我的理解是支持 c++11 他们必须完全重建他们的整个编译器......但已经 5 年了,他们仍然存在根本性的缺点。表达方式?不支持。
  • 我认为这种关闭是不合适的。这个问题是问如何使用 GSL,这是一个非常好的 StackOverflow 问题。它只要求在最后一个要点中顺便推荐一个工具,可以轻松删除。
  • “所以现在我很困惑。”好的,现在很困惑。我期待make 的结果会被发布,但它不存在。

标签: c++ guideline-support-library


【解决方案1】:

Guidelines Support Library(另请参见gsl-lite)是一个 C++ 库,它实现了C++ Core Guidelines 中推荐的一些函数和类。一份关于如何使用现代 C++ 的建议的文档。如果您想改进 C++ 的使用,值得阅读或略读 C++ 核心指南。使用 GSL 库不太重要,但如果您发现自己实现了其中已有的代码,它可能会很有用。 C++ 核心指南已经存在几年了,所以有些东西,比如 string_view,已经可用(取决于你编译到的 C++ 版本)并且不需要使用外部库。

【讨论】:

  • 请注意,只有一半甚至更少的指南会改进您的 C++。另一半只会让情况变得更糟。
  • 那是怎么回事?
  • 即使一个人的行为与指南中建议的不同(由于个人的风格、需求、环境、理念等),人们或许可以对此做出更有意识的决定。
【解决方案2】:

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

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

Visual Studio 2015 有plugins,它可以帮助您检查您的代码是否符合 GSL

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多