c++主函数,如果命令行参数包含*,argc值会很奇怪

c++ main function, argc value is weird if command-line arguments contain *

本文关键字:argc 包含 函数 如果 命令行 参数 c++      更新时间:2023-10-16

一段非常简单的C++代码,如下所示:

int main(int argc, char **argv){
    std::cout << "argc: " << argc << std::endl;
}

g++ -o hello hello.cpp 编译

  • 当使用./hello u运行时,输出为argc: 2
  • 当使用./hello u +运行时,输出为argc: 3
  • 当使用./hello u *运行时,输出为argc: 26,为什么是26

外壳扩展。外壳程序将*扩展到当前目录中的所有文件中,其中似乎有24个文件,并将它们作为单独的参数传递给程序。

由于这看起来像是来自UNIX shell的调用,请使用

./hello u *

./hello u '*'

您需要传递shell在' '中解释为特殊字符的内容。

因此,正确的命令行调用应该是./hello u '*'