Как избежать арифметики указателей при использовании char ** argv

При попытке вывести первый аргумент командной строки:

std::cout << argv[0] << std::endl;

Clang-Tidy дает предупреждение:

предупреждение: «не используйте арифметику указателей»
из [cppcoreguidelines-pro-bounds-pointer-arithmetic]

Есть ли альтернативный способ использования значений argv без использования арифметики указателей? Не имеет доступа к char** любым разумным методом придется использовать указатель арифметики?

Я ценю, что есть некоторые специализированные функции для обработки аргументов командной строки, но они кажутся слишком тяжелыми для простой печати одного аргумента.

Я пишу в c++, с использованием clang компилятор и сборка с cmake,

9

Решение

От clang-tidy — cppcoreguidelines-pro-bounds-pointer-arithmetic:

Указатели должны ссылаться только на отдельные объекты, а арифметика указателей хрупкая и ее легко ошибиться. span<T> является безопасным типом с проверкой границ для доступа к массивам данных.

Так да:

Есть ли альтернативный способ использовать значения argv без использования арифметики указателей? Разве для доступа к символу ** любым разумным методом не нужно использовать арифметику указателей?

Ты полностью прав. Тем не менее, рекомендация заключается в том, чтобы скрыть эту арифметику указателя, позволяя вспомогательному классу выполнять проверки границ перед выполнением арифметики. Вы можете построить span<char*> от argv а также argc,

7

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector