я работаю с большим C-только проект, и я постоянно получаю укусила следующей проблемой:C - ловить ошибки неправильных параметров
Допустим, у меня есть функция
void MyFunction(int parameter)
{
printf("parameter: %d\n", parameter);
}
, которые обычно вызывается
int aVariable = 5;
MyFunction(aVariable);
Однако, по-видимому, из-за стандартных C спецификации, это не вызывает ошибку компиляции:
int aVariable = 5;
MyFunction(&aVariable); // No error signaled, but causes all sorts of mayhem
Как я могу уловить эту ошибку, особенно в Visual Studio? Есть ли какая-либо настройка, которую я могу включить, чтобы сделать ее более строгой? Любая стратегия, которую вы могли бы порекомендовать (к тому же «не делать опечатки»)?
Редактировать: Я могу добавить, что из-за (дрянной) природы проекта код образца уже генерирует множество предупреждений; Я не уверен, что смогу удалить всех из них за время, которое у меня есть. Генерирование большего количества предупреждений может быть не лучшим вариантом, однако возможность распознавания этих конкретных предупреждений (как следует из одного ответа) может быть решением этой конкретной проблемы.
Представлен ли компилятор прототипом MyFunction? (до того, как он попадет в строку 'MyFunction (& variable);') – immibis
У вас есть прототипы функций в файлах заголовков? – aschepler
@aschepler Да, у меня есть эта проблема даже с функциями с прототипами, указанными в файлах заголовков. – Alejandro