Может ли компилятор 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 ++.
Похоже, ответ — нет. Компилятор MSVC не имеет опции, эквивалентной G-smissing-декларациям.
Эти две функции совершенно разные, согласно правилам языка C ++.
Компилятор должен реагировать так же, как если бы имя первой функции было calcSomething
и имя второго было calcSomeOtherThing
,
В частности, функция, которую вы объявили в заголовке, будет неопределенной, поскольку не имеет реализации. Любой код, который вызывает его, не будет компилироваться и ссылаться. Невозможно создать исполняемый файл, который вызывает функцию, которая никогда не была определена. Компилятор не знает, что делать, когда вызывается функция.