gpt4 book ai didi

assembly - 位置参数与关键字参数

转载 作者:行者123 更新时间:2023-12-02 05:17:46 25 4
gpt4 key购买 nike

这是我的老师在考试中提出的问题。我也在书中和网上搜索过,但我没有找到答案。我知道问题的第一部分。问题是关于编译器和汇编器的。

问题:使用关键字参数比使用位置参数有什么优势?在组装过程中是否会产生任何开销?它在执行期间会产生任何开销吗?

最佳答案

回答您的问题:

  1. 有什么优势?

    主要优点是避免在错误的地方定义错误参数的问题。例如:

    strlen(s);

    只有一个参数,所以没有出错的风险。然而:

    strpos(s, "needle", 34);

    可能是错误的,因为例如,s"needle" 可能是颠倒的。使用命名参数:

    strpos(start_pos => 34, string => s, needle => "needle");

    你可以肯定的是,一旦编译成汇编,参数就会被正确放置(因为对于最终的汇编结果,这显然是非常重要的!)

  2. 组装过程中的开销?

    是的。显然,您需要读取额外的数据,并且您的编译器必须重新排序参数。这也意味着 header 必须用名称声明参数。在 C 中,你经常会看到这样的事情:

    strpos(const char *, const char *, int);

    现在您在声明中以及何时使用函数时有了名称。还有更多的标识符需要解析,可能还有内存需要分配等等。

    在现代计算机上,我们的肉眼是否可以看到这种开销?可能不是。

  3. 最终的二进制文件是否运行得更慢?

    没有。无论哪种方式,最终二进制文件中的结果都完全相同。只有一种方法比另一种方法安全得多。 (即,如果我们都被迫始终指定参数名称,那么可以避免许多错误......但是,PHP 或 python 等脚本运行速度会较慢,因为每次执行时都需要重新解析这些参数脚本。)

关于assembly - 位置参数与关键字参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23494203/

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