像这样一段非常简单的 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
?
最佳答案
外壳扩展。 *
由 shell 扩展为当前目录中的所有文件,其中似乎有 24 个,并将它们作为单独的参数传递给您的程序。
因为这看起来像是来自 UNIX shell 的调用,所以使用
./hello u \*
或
./hello u '*'
关于c++ main 函数,如果命令行参数包含 *,则 argc 值很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29389699/