【问题标题】:Invalid amount of arguments参数数量无效
【发布时间】:2013-07-10 01:55:09
【问题描述】:

不好意思问了这么一个菜鸟问题,我以前从来没有遇到过,我上网查了一下,只能找到argc和argv是什么的描述。

无论如何,我在visual studio 2012中启动了一个新的win32控制台项目。我点击空项目,并开始添加program.cpp,其内容如下:

#include <iostream>
#include <Windows.h>

int main(int argc, char** argv)
{
    printf( "%d", argc );
    getchar();
    return 0;
}

我打算使用参数来制作程序,这就是为什么我需要 argc 才能正常工作。关于输出的代码像'21374903'这样的巨大数字。在属性 -> 链接器 -> 高级中,我将入口点设置为“main”。

我做错了什么吗?我可以添加设置以使其正常工作吗?

【问题讨论】:

  • 请注意,printfgetchar 必须包含&lt;stdio.h&gt;,而&lt;windows.h&gt; 是不必要的。
  • @JamesMcNellis Windows.h 用于 SetConsoleTitle(尚未添加),iostream 包含 printf 和 getchar。我编译了一个空项目,所以我不需要 stdio.h :)

标签: c++ visual-studio


【解决方案1】:

在属性 -> 链接器 -> 高级中,我将入口点设置为“main”。

不要那样做。入口点需要是 C 运行时 (CRT) 入口点,它执行 C 初始化,从操作系统获取参数,并使用它们调用您的 main 函数。

如果您没有明确告诉链接器入口点的名称,它将自动选择正确的入口点。调用main 的CRT 入口点被命名为mainCRTStartup(还有其他名称的CRT 入口点调用Visual C++ 支持的其他种类的主要函数)。

【讨论】:

  • 哇,谢谢!我只是假设我必须这样做。您必须定义其他所有内容(傻笑)。
  • 从不费心去修改入口点,知道它应该是什么很有用。
  • 在极少数情况下(阅读:极其罕见)需要覆盖入口点。
猜你喜欢
  • 2017-03-27
  • 2018-03-31
  • 2020-03-02
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2016-05-01
相关资源
最近更新 更多