Jim*_*mie 13 c++ visual-studio
出于某种原因,我的Visual Studio 2008开始显示代码警告:"int main(int argc,char**argv)",这真的很烦人.
详细的警告输出是(你可以忽略行号):
1>.\ main.cpp(86):警告C4100:'argv':未参考形式参数
1>.\ main.cpp(86):警告C4100:' argc':未参考的形式参数
我想知道Visual Studio 2008中是否有意外更改的设置.或者我该如何处理这个警告?
Jam*_*lis 21
如果参数未被引用,您可以将它们保留为未命名:
int main(int, char**)
{
}
Run Code Online (Sandbox Code Playgroud)
代替
int main(int argc, char** argv)
{
}
Run Code Online (Sandbox Code Playgroud)
如果您真的只想抑制警告,可以使用/wd4100编译器的命令行选项或#pragma warning(disable: 4100)在代码中使用.
这是4级警告; 如果您以较低的警告级别进行编译,则不会收到此警告.警告级别在项目属性中设置(右键单击项目,选择"属性";在"配置属性" - >"C++" - >"常规"中,设置"警告级别").
警告 C4100 在警告级别 4 发出,这不是默认值,因此在某些时候有人可能会为您的项目更改它。
您可以更改警告级别,或者更直接地解决警告。
正如James McNellis 所说,您可以通过从参数列表中删除参数名称来消除 C++ 中的警告。但是,如果将代码编译为 C 代码,在这种情况下您将收到错误消息。
Windows 标头定义了UNREFERENCED_PARAMETER()帮助处理此警告的宏。你可以用
UNREFERENCED_PARAMETER( argc);
UNREFERENCED_PARAMETER( argv);
Run Code Online (Sandbox Code Playgroud)
使警告静音。如果您不想包含 Windows 标题,则宏只是扩展为在无操作表达式中使用参数名称:
#define UNREFERENCED_PARAMETER(P) \
/*lint -save -e527 -e530 */ \
{ \
(P) = (P); \
} \
/*lint -restore */
Run Code Online (Sandbox Code Playgroud)
如果您没有使用命令行参数,那么main的其他标准签名是:
int main();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16280 次 |
| 最近记录: |