" Мой вопрос: как мне лучше всего обнаружить эти маленькие ошибки в коде? "
К сожалению, нет параметров компилятора для обнаружения логические проблемы , ни в G CC, ни в Clang.
Использование неуместного объекта в месте, где может быть вставлен объект того же типа, не может быть обнаружено компилятором, потому что это логическая проблема. Компилятор может обнаруживать только проблемы syntacti c.
Если предполагается, что память не повреждена, ее невозможно найти даже с помощью некоторых дополнительных инструментов анализатора кода, таких как AddressSanitizer или Valgrind.
Единственное, что вы можете сделать, чтобы предотвратить такие ошибки, - это соблюдать осторожность при кодировании.
Избегайте слишком частого копирования и вставки и лучше сосредоточьтесь на написании кодируйте части отдельно.
Что касается предоставленной проблемы, избегайте копирования l oop головок или их частей, особенно внутри вложенных циклов.
Но чтобы ответить на ваш вопрос:
Помимо -Wall и -Wextra, какие еще инструменты доступны для обнаружения как можно большего количества ошибок или предупреждений?
Существуют -Wpedantic
/ -pedantic
, -Wall
и -Werror
для G CC, например.
Вы можете найти их и другие, перечисленные с соответствующими пояснениями, здесь:
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning -Options
Для Clang у вас fe -Weverything
. Список вариантов диагностики c с их описанием вы можете найти здесь:
https://clang.llvm.org/docs/DiagnosticsReference.html