C++ C4211:使用的非标准扩展:将外部重新定义为静态
我目前正在从源代码中删除一些编译器警告。我有一个具有以下函数签名的函数,我得到了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文档中找到原因。我在其他项目中有类似的功能,在那里
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