Может ли Visual C ++ проверить несоответствующий прототип и реализацию?

Может ли компилятор VC предупредить, если он не может найти реализацию прототипа?

Пример (обратите внимание на несоответствие параметров):

// calcSomething.h
int calcSomething(
int    year,
int    month,
int    day,
int    hour,
int    minute,
int    second
);

а также

// calcSomething.cpp
int calcSomething(
int    year,
int    month,
int    day
)
{
// ... implementation
}

Обновление: по-видимому G ++ имеет переключатель под названием -Wmissing-declarations который, я думаю, может соответствовать тому, что мне нужно, но, очевидно, для VC ++.

1

Решение

Похоже, ответ — нет. Компилятор MSVC не имеет опции, эквивалентной G-smissing-декларациям.

Параметры командной строки по категориям.

2

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

Эти две функции совершенно разные, согласно правилам языка C ++.

Компилятор должен реагировать так же, как если бы имя первой функции было calcSomething и имя второго было calcSomeOtherThing,

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

2

По вопросам рекламы [email protected]