执行 C 程序的命令行参数

新手上路,请多包涵

这是我的 C++ 程序的主要部分:

 void main(int argc, char** argv, Arguments& arguments)

第一个参数是一个文件,其余的是布尔值。

我想知道命令行编译程序的正确语法是什么。

我试过了:

 gcc  -o "argument1" "argument2" "argument3" prog.cpp

g++ -std=c++11 -o "argument1" "argument2" "argument3" prog.cpp

但我收到此错误:

 linker command failed with exit code 1 (use -v to see invocation)

我怀疑我没有正确传递参数,因此我的程序没有正确链接到输入文件(argument1)。

谢谢你纠正我。

原文由 user8559454 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 344
2 个回答

主函数定义如下:

 int main (int argc, char *argv[])

或者

int main (int argc, char **argv)

据我了解,argc = 参数计数和 argv = 参数向量。 argc 是参数的数量(您可以选择多少),而 argv 包含该数量的参数,其中包含您要从命令行传递给程序的所有实际数据。但请记住,至少有一个参数是第一位的:程序的名称。

这些不在编译期间使用,而是在运行时使用。运行程序与编译和链接不同,编译和链接必须先完成(在你的情况下使用 gcc)。

原文由 matt_rule 发布,翻译遵循 CC BY-SA 3.0 许可协议

主参数和命令行参数

Main 可以有以下 两种形式 之一:

 int main()
int main(int argc, char** argv)

在第一种形式中,您不能传递任何参数。在第二种形式中 argc 是在命令行上传递的参数的计数,而 argv 是一个长度为 char* 的数组 argc 包含命令行参数。

因此,例如,如果您将程序称为

./program apple bananna carrot date

那么 argc 将等于 5 并且 argv 将包含以下值:

 argv[0] = "./program" -- the name of your program as called on the command line.
argv[1] = "apple"
argv[2] = "bananna"
argv[3] = "carrot"
argv[4] = "date"

编译和运行你的程序

C++ 不是解释型语言,因此必须进行编译。假设您的源代码在一个名为 program.cpp 的文件中,并且您希望您的可执行文件被称为 program ,那么您将调用 g++ 如下:

 g++ -o program program.cpp

如果您 ls 当前目录,您现在应该在源代码旁边的目录中看到一个名为 program 的文件。您现在可以运行该程序(再次假设您将输出文件命名为 program

 ./program arg1 arg2 arg3

并且字符串 arg1arg2arg3 将如上所述传递给 main 。

原文由 Paul Belanger 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题