我在这里遇到一些麻烦,在项目选项本身中给Visual Studio提供命令行参数(在'Configuration Properties' - >'Debugging'中) .
我写的这个“ int main(int argc)
" after the " int main(int main_i)
”没用 . 在MS visual studio属性页面的项目命令行参数中,我不确定应该写什么 . 我只想传递一个整数来指定文件是读取还是写入,因此只需要int argc . 我不需要char *argv[]
. 我在命令行参数文本框中尝试了一些值,但它在执行时没有到达exe文件,它显示了我根本没有输入的内容 .
你能给我一个简单的例子来说明我需要在MSVS C Property Pages的命令行参数空间输入什么吗?我根本找不到任何关于如何将命令行参数提供给MSVS的示例 .
我也不明白为什么我需要重建整个项目,即使我刚刚修改了命令行参数值?
6 回答
和其他提到的一样,这只是一个方便的问题,Kernighan和Ritchie在第一个C版本中使用了这些参数 .
你可以自由使用任何东西 .
这是一个简单的例子:
我使用Visual C 2010 Express . 如果这样做,可以按Alt F7以显示项目属性,转到配置属性>调试并在
Command Arguments
中键入命令行参数 .而已 .
如果要读取命令行参数的值,则必须使用
char *argv[]
. 否则你可以放弃它 .如果您只想要一个整数来区分两件事,那么您有一种方法可以做到这一点 . 只需传递一个命令行参数,并且不需要
char *argv[]
. 现在只传递一个命令行参数,然后argc
的值是2
,即可执行文件的名称命令行参数 .如果你没有传递命令行参数,那么它的值只是
1
,即可执行文件的名称 .如果希望程序理解单个整数命令行参数,则仍需使用
argc
和argv
. 像这样的东西应该这样做:C标准要求
main
函数具有特定的参数集 . 其中一个允许的组合是(int, char *[])
. 您可以根据需要为参数命名,但它们几乎总是被称为argc
和argv
.这些名称只是一个完善的约定,你可以使用你想要的任何名称(虽然它可能引起一些人的注意),但是,我只看到了以指定的顺序使用了两个参数的代码 .
在ANSI之前的日子里,它可以简单地拥有
int main()
,它仍然是......但是这些天通常都会提供argc
argv
.您不能只提供其中一个参数 .
变量名称仅适用于编译器 . 它们将转换为二进制图像中的地址 . 您可以为main传递最多3个参数 .
这是我试过的 -
如您所见,名称不是正常名称 . 第一个参数是命令行参数的数量,第二个参数是实际的参数数组,第三个是环境变量数组 .
事实上,主要可以采取任何数量的论点,但其余的,在第三个之后将是无效的 . 这仍然会编译 -
只是为了好玩,你甚至可以这样做 -
即使是简单的_2379825也是允许的,你仍然可以访问这些参数 .
您还可以使用
GetCommandLine
函数来访问命令行 . 没有/使用main
的论点的重要方面是你仍然可以 access command line arguments in any function .