标签: argc

int argc,char*argv []是什么意思?

在许多C++ IDE和编译器中,当它为您生成主函数时,它看起来像这样:

int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)

当我在没有IDE的情况下编写C++代码时,只需使用命令行编译器,我输入:

int main()
Run Code Online (Sandbox Code Playgroud)

没有任何参数.这意味着什么,对我的计划至关重要?

c++ parameters argv command-line-arguments argc

476
推荐指数
8
解决办法
81万
查看次数

为什么argc不是常数?

int main( const int argc , const char[] const argv)
Run Code Online (Sandbox Code Playgroud)

正如有效的C++第3项规定"尽可能使用const",我开始思考"为什么不制作这些'常数'参数const"?

是否存在argc在程序中修改值的任何情况?

c++ program-entry-point const effective-c++ argc

102
推荐指数
4
解决办法
6538
查看次数

关于'main(int argc,char*argv [])'

可能重复:
main()的参数是什么?
int argc,char*argv []是什么意思?

每个程序都从main(int argc, char *argv[])定义开始.

我不明白这意味着什么.如果我们在程序中不使用这些参数,有人可以解释为什么我们会使用这些参数,我会很高兴的吗?为什么不int main()呢:?

程序的名称是其中的一个元素,*argv[]并且argc是参数个数的计数*argv[]?发送到的其他参数是*argv[]什么?我们如何发送它们?

c argv argc

93
推荐指数
3
解决办法
48万
查看次数

为什么MPI_Init接受指向argc和argv的指针?

这就是我们如何使用MPI_Init函数

int main(int argc, char **argv)
{
    MPI_Init(&argc, &argv);
…
}
Run Code Online (Sandbox Code Playgroud)

为什么MPI_Init使用指向argc和argv的指针而不是argv的值?

mpi argv argc

23
推荐指数
2
解决办法
2万
查看次数

处理argc等于0

我最近看到一些好奇的东西.在HHVM源代码中,该main()函数的前3行内容如下:

if (!argc) {
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这有点傻,但是,我还是忍不住想知道...... 为什么要回归0!并不是我认为有一些正确的方法可以解决这个问题,但通常与成功相关的0返回似乎特别不合适.

除了没有崩溃,有没有一个适当的响应argc0?(甚至还不到0?)这有关系吗?

我知道最终在argc0 的情况下结束的唯一方法是exec()和朋友一起.如果出于某种原因确实发生了这种情况,那几乎可以肯定是调用者中的一个错误,而被调用者无法做很多事情.

(标记为C和C++,因为我希望这两种语言的答案是相同的)

编辑:为了使问题不那么模糊和哲学,我会提供另一种选择.

if (!argc) {
  puts("Error: argc == 0");
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

关键点是有错误的指示并返回非零值.这种情况极不可能需要,但如果是这样,你可能会尝试指出错误.另一方面,如果检测到的错误严重到argc等于0,那么尝试访问stdout或C标准库可能是不好的.

c c++ argc

11
推荐指数
2
解决办法
1866
查看次数

使用argc = 0执行进程

是否可以执行argc = 0的进程?我需要执行一个程序,但它的argc等于0是非常重要的.有没有办法做到这一点?我试图在命令行中放置2 ^ 32个参数,使其看起来好像argc = 0但是参数个数有一个最大限制.

c integer-overflow argv argc

10
推荐指数
2
解决办法
6896
查看次数

为什么main(int argc,char*argv [])有两个参数?

我一直认为这argc是标志结束的必要条件,argv但我只是argv[argc] == NULL按照定义学到了这一点.我认为这argc完全是多余的吗?如果是这样,我一直认为C以效率的名义取消冗余.我的假设是错误的还是背后的历史原因?如果原因是历史性的,你能详细说明吗?

c argv argc

10
推荐指数
1
解决办法
650
查看次数

在main()之外处理argc和argv

如果我想保留用于处理命令行参数的大部分代码(用于组织和更易读的代码),那么最好的方法是什么?

void main(int argc, char* argv[]){
    //lots of code here I would like to move elsewhere
}
Run Code Online (Sandbox Code Playgroud)

c++ parsing arguments argv argc

8
推荐指数
1
解决办法
1万
查看次数

如何在PHP中覆盖register_argc_argv?

我正在使用共享主机(fasthostingdirect),由于某种原因,他们默认关闭此标志.这意味着我无法访问PHP命令行参数...除非我之后使用-n(= --no-php-info)标志php.exe.

尝试ini_set('register_argc_argv', 1)过我的php文件,但没有效果.我猜这是由于托管服务提供商的限制性质,但他们并没有停止-n选择 - 不知道使用它的其他含义.有没有人有更好的建议?

php ini-set command-line-interface argv argc

7
推荐指数
2
解决办法
6671
查看次数

FreeBSD/amd64 程序集 - 如何从 _start 读取“ARGC”?

argc有时返回正确的值,有时返回 0,有时返回(看似)随机数……所有这些都来自同一个可执行文件。

.section .text
.global _start
_start:
    movq    $1, %rax
    popq    %rdi
    syscall
Run Code Online (Sandbox Code Playgroud)

例如:

%as -o this.o this.s ; ld -o this this.o

%./this; echo $?
1

%./this 1; echo $?
0

%./this 1 2; echo $?
3

%./this 1 2 a; echo $?
4

%./this 1 2 a f; echo $?
0

%_
Run Code Online (Sandbox Code Playgroud)

我对汇编有点陌生,但我非常有信心获取参数计数就像在 Linux 中将其从堆栈中弹出一样简单,其中 System V ABI 记录 RSP 在argcexecve进程中指向的内容。

是我做错了什么,还是事情真的很糟糕?

assembly freebsd x86-64 abi argc

6
推荐指数
1
解决办法
776
查看次数