gpt4 book ai didi

c++ - 为什么 argc 不是常量?

转载 作者:行者123 更新时间:2023-11-30 17:04:30 27 4
gpt4 key购买 nike

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

Effective C++ Item#3 指出“尽可能使用 const”,我开始思考“为什么不让这些‘常量’参数 const”?

程序中是否存在修改argc值的场景?

最佳答案

在这种情况下,历史是一个因素。 C 将这些输入定义为“不恒定”,并且与(大部分)现有 C 代码兼容是 C++ 的早期目标。

某些 UNIX API,例如 getopt,实际上会操作 argv[],因此不能将其设为 const还。

(旁白:有趣的是,尽管 getopt 的原型(prototype)表明它不会修改 argv[] 但可能会修改指向的字符串,Linux man page 表明 getopt 排列其参数,并且 it appears they know they're being naughty 。Open Group 的手册页没有提及这种排列。)

const 放在 argcargv 上不会有太大作用,而且它会使一些老式的编程实践失效,例如:

// print out all the arguments:
while (--argc)
std::cout << *++argv << std::endl;

我已经用 C 语言编写过这样的程序,而且我知道我并不孤单。我从某处复制了该示例。

关于c++ - 为什么 argc 不是常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35734267/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com