Visual C ++可以检查不匹配的原型和实现吗?

时间:2014-01-20 14:38:28

标签: c++ visual-c++ visual-c++-2013

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 ++。

2 个答案:

答案 0 :(得分:2)

根据C ++语言规则,这两个函数完全不同。

编译器的反应方式与第一个函数的名称为calcSomething且第二个函数的名称为calcSomeOtherThing的方式相同。

特别是,您在标头中声明的函数将是未定义的,因为它没有实现。任何调用它的代码都不会编译和链接。无法生成调用从未定义过的函数的可执行文件。编译器在调用函数时不知道该怎么做。

答案 1 :(得分:2)

似乎答案是否定的。 MSVC编译器没有相当于G ++的-Wmissing-declarations的选项。

Command line options by category