0

一段非常简单的 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
4

2 回答 2

10

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

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

./hello u \*

或者

./hello u '*'
于 2015-04-01T11:36:33.703 回答
0

您需要将 shell 解释为特殊字符的内容传递给' '.

所以正确的命令行调用应该是./hello u '*'

于 2015-04-01T11:38:48.920 回答