Рассмотрим следующий фрагмент:
#include <iostream>
using namespace std;
int a[10][2];
int b[10][2];
int main(){
//intended
cout << a[0][0] - b[0][0] << endl;
//left out dimension by mistake
cout << a[0] - b[0] << endl;
}
Очевидно, что (или, может быть, не для комментариев) второй случай является допустимой арифметикой указателя как в C, так и в С++, но в базе кода, с которой я работаю, это, как правило, семантическая ошибка; измерение, как правило, было исключено во вложенном цикле. Есть ли какой-либо флаг -W или инструмент статического анализа, который может обнаружить это?