Описание тега cpp-core-guidelines
Основные принципы C++ - это совместные усилия под руководством Бьярна Страуструпа, как и сам язык C++. Они являются результатом многих человеко-лет обсуждения и разработки в ряде организаций. Их дизайн способствует повсеместному применению и широкому внедрению, но их можно свободно копировать и изменять в соответствии с потребностями вашей организации.
2
ответа
Изменение not_null для запрета сравнений с nullptr
Я пытаюсь получить проверку во время компиляции для назначения и проверки на ноль. Причина в том, что я использую "магический" ненулевой указатель для представления отключенного состояния чего-либо, и легко забыть, что он использует этот магический …
27 июн '18 в 07:38
1
ответ
Есть ли реализация GSL, которую я могу использовать с GCC 4.9.x?
Утверждается, что реализация библиотеки поддержки Microsoft (Core) Guidelines поддерживает GCC 5.1, но не определяет поддержку других версий. Более высокие версии кажутся нормальными (в любом случае 5.3.1 на моем Debian Stretch), но сборка тестов с …
04 мар '16 в 00:06
1
ответ
CppCoreChecker C-Style предупреждение о применении при использовании диапазона на основе цикла для вектора
Предположим, следующий код: #include <iostream> #include <vector> #include <string> int main() { std::vector<std::string> lines; lines.push_back("line"); for (const auto& s : lines) { std::cout << s; } } В строке ци…
27 июн '17 в 09:18
0
ответов
Как правильно установить заголовок, который включает GSL (Библиотека поддержки руководящих принципов)
// include/MyLib/MyModel.h #include <memory> #include <string> #include "myEntity.h" #include <gsl/gsl> class MyModel { public: std::unique_ptr<MyEntity> load(std::string id); bool store(gsl::not_null<MyEntity*> entity)…
12 окт '17 в 18:12
1
ответ
Должен ли я использовать Библиотеку поддержки рекомендаций (GSL) в новом проекте C++?
Каковы плюсы и минусы за и против использования библиотеки поддержки рекомендаций (GSL) в новом проекте C++? Я нахожу некоторые конструкции там очень привлекательными, но немного боюсь включить и положиться на такую фундаментальную библиотеку.
16 янв '19 в 10:37
1
ответ
Какую цель преследует `gsl::string_span`?
Читая реализацию Microsoft Cpp Core Guidelines, я столкнулся с двумя вопросами: Почему gsl::string_span при условии, где gsl::span уже хорошо работает? Почему gsl::zstring_span при условии, где std::string уже гарантированно будет нулевым символом с…
18 мар '18 в 14:22
1
ответ
Интеграция CMake с Visual Studio 2017 C++ Core Guidelines Checker (CppCoreCheck)
В настоящее время я пытаюсь интегрировать C++ Core Guidelines Checker (CppCoreCheck) Visual Studio 2017 с системой мета-сборки CMake, используя Visual Studio 15 2017 Win64 генератор. Следующий пример иллюстрирует мой подход (я попытался сократить ис…
04 сен '18 в 14:02
0
ответов
Потерянное пространство в макете в Основных принципах CPP
Я читал " Основные принципы CPP", стр.9: не теряйте времени и места: Пример, Плохо: struct X { char ch; int i; string s; char ch2; X& operator=(const X& a); X(const X&); }; X waste(const char* p) { if (!p) throw Nullptr_error{}; int n = …
31 янв '19 в 09:51
2
ответа
C++: попытка устранить необработанный цикл с помощью эквивалентного алгоритма STL
Я пытаюсь модернизировать некоторый код C++, придерживаясь основных рекомендаций и рекомендаций после ++11. Конкретное руководство, к которому я обращаюсь, это использовать <algorithm> средства вместо сырых циклов, применяющих статические опер…
10 окт '18 в 21:25
1
ответ
Значение интерфейсов f(T*, int) и интерфейсов f (span<T>) в основных рекомендациях по cpp
Раздел P3 основных руководящих принципов cpp предлагает следующий шаблон в разделе "Обеспечение соблюдения": f (T *, int) интерфейсы против f(span) интерфейсов Может кто-нибудь объяснить, что это значит для старого программиста на C, который хочет п…
03 ноя '17 в 08:04
0
ответов
Как вы можете исключить сторонние библиотеки из CppCoreCheck?
Я начал использовать CppCoreCheck в некоторых своих проектах. Ура! Но теперь я застрял в предупреждениях gazillion от boost и Qt. Есть ли способ исключить их из проверки?
22 мар '17 в 13:38
1
ответ
Инициализированная переменная приоритета в основных рекомендациях класса и cpp?
Я использую C++ Core Checker nuget и запускаю свой аналитик кода У меня есть это предупреждение warning C26495: Variable 'Point::_x' is uninitialized. Always initialize a member variable. (type.6: http://go.microsoft.com/fwlink/p/?LinkID=620422) Poi…
22 июн '16 в 02:34
1
ответ
Является ли синтаксически правильным выражение C++ for_each(v, [](строка x)?
Является ли приведенное ниже выражение действительным для for_each()? for_each(v,[](string x){ cout<<x<<endl; }); Ссылка: CppCoreGuidelines.md # p3-express-intent Вышеприведенное выражение выдает ниже ошибки: error: no matching function …
06 мар '17 в 18:49
1
ответ
Есть ли законный способ перейти от gsl:: not_null<T>?
Введена библиотека поддержки рекомендаций not_null<T> кто имеет целью принудительное применение инварианта для типов, похожих на указатели, а также для интеллектуальных указателей. Однако это известная проблема, not_null<unique_ptr<T>…
15 фев '16 в 23:01
2
ответа
Понимание gsl:: узкой реализации
Основные принципы C++ имеют narrow приведение, которое бросает, если приведение изменяет значение. Рассматривая реализацию библиотеки Microsoft: // narrow() : a checked version of narrow_cast() that throws if the cast changed the value template <…
17 окт '18 в 21:08
3
ответа
Почему я не могу создать gsl::span со списком инициализаторов в скобках
В соответствии с C++ Core Guidelines, я должен использовать gsl:: span для передачи полуоткрытой последовательности. Я думаю, это означает, что вместо написания такой функции, как: void func(const std::vector<int>& data) { for (auto v : da…
23 ноя '15 в 15:32
2
ответа
Когда я использую "__attribute__((nonnull))" против "not_null<T *>"?
Я привык к использованию __attribute__((nonnull)) при выражении указателей, которые не должны быть нулевыми. void f(int* ptr __attribute__((nonnull))); int main(){ int* ptr = new int(1); f(ptr); } void f(int* ptr){/*impl*/} Тем не менее, с GSL, есть…
28 июл '16 в 16:05
1
ответ
Cpp Core Guidelines Checker с использованием консоли и MSBuild
У меня есть решение с некоторыми проектами, которые созданы для строительства. Я хочу запустить контрольные проверки для решений. Используя эту статью MSDN, я не хочу изменять файлы проекта, поэтому я создал batfile: call "%VS140COMNTOOLS%\VsMSBuild…
10 апр '18 в 15:48
1
ответ
Разве gsl::cstring_span не поддерживает constexpr? Если нет, зачем мне его использовать?
У меня есть кусок кода, который выглядит следующим образом: constexpr gsl::cstring_span<> const somestring{"Hello, I am a string"}; и он отказывается компилировать сообщение с жалобой на то, что где-то вызывается какая-то функция non-constexpr…
20 сен '18 в 22:23
1
ответ
Как использовать gsl::span для исправления Нет массива к предупреждению о затухании указателя?
Я пытаюсь разрешить следующее предупреждение. warning C26485: Expression 'pNMLink->item.szUrl': No array to pointer decay. (bounds.3...) Это предупреждение вызвано следующим кодом. auto pNMLink = reinterpret_cast<PNMLINK>(pNMHDR); ShellExec…
16 фев '18 в 03:24