1

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

4

2 回答 2

2

根据 C++ 语言规则,这两个是完全不同的功能。

编译器应该以相同的方式做出反应,就好像第一个函数calcSomething的名称是 并且第二个函数的名称是calcSomeOtherThing

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

于 2014-01-20T14:42:28.067 回答
2

看来答案是否定的。MSVC 编译器没有与 G++ 的 -Wmissing-declarations 等效的选项。

按类别分类的命令行选项

于 2014-01-20T15:43:25.610 回答