C++ C4211:使用的非标准扩展:将外部重新定义为静态

C++ C4211:使用的非标准扩展:将外部重新定义为静态,c++,warnings,C++,Warnings,我目前正在从源代码中删除一些编译器警告。我有一个具有以下函数签名的函数,我得到了C4211警告 static void setBits(const std::vector<bool>& flags, std::vector<Results::Bits>& bits, int index, int errors) 这一警告的原因是什么?我正在使用VC2003编译器。 老实说,我无法从我的互联网研究和MSDN文档中找到原因。我在其他项目中有类似的功能,在那里

我目前正在从源代码中删除一些编译器警告。我有一个具有以下函数签名的函数,我得到了C4211警告

static void setBits(const std::vector<bool>& flags, std::vector<Results::Bits>& bits, int index, int errors)
这一警告的原因是什么?我正在使用VC2003编译器。
老实说,我无法从我的互联网研究和MSDN文档中找到原因。我在其他项目中有类似的功能,在那里我根本没有得到警告。

我在linting期间遇到了类似的错误

似乎您已将函数定义为静态
然而,它的声明说它是一个外部的。(默认情况下,Extern为)

尝试在源代码中grep/search函数名并修复声明


有关更多信息,请检查此

我不使用Microsoft的编译器,但根据错误消息,我假设
setBits
最初声明为
extern void setBits(…)
(很可能在头文件中),后来在定义中被定义为
static void setBits(…)
取而代之。由于
extern
是默认值,下面的最小示例在现代MSVC上导致此警告:
void f();静态空隙f()您能否制定一个解决此问题的答案?
C4211: Nonstandard extension used : redefined extern to static