gpt4 book ai didi

c - 静态和内联

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:40 25 4
gpt4 key购买 nike

我正在用 C 语言编程。我想要一些关于静态和内联函数的描述。我知道,如果我们将一个函数设为静态,那么它就向编译器表明它仅处于一个翻译单元的内部链接之下。我对静态和内联有以下疑问:

  1. 如果我们将一个函数设为静态,我们可以在其他翻译单元中使用它吗...即在其他 .c 文件中?如果是..如何?
  2. 如果我们将函数设为静态内联,那么有什么区别呢?编译器将如何处理它?
  3. 将函数设为静态是否会产生与宏相同的效果?
  4. 将函数视为内联取决于编译器,具体取决于大小。那么有什么方法可以强制将其视为内联?
  5. 我们如何使用内联函数和静态函数进行优化?

请阐明上述内容。平台为Linux,gcc编译器,C语言。

最佳答案

  1. static 函数不能在其他翻译单元中使用。这是他们存在的理由。

  2. inline 向编译器提示函数应该被内联而不是被调用。

  3. 将函数设为静态与使用宏不同。宏基本上会否决编译器。无论它认为内联是否明智,宏都会被内联;宏是文本替换。您还可以将 static 函数传递给需要函数指针的对象。不能用宏来做到这一点。

  4. 宏会强制内联任何内容。甚至可以否决指定 inline

  5. 制作您不想导出的函数static。如果一个函数真的很小,而你真的认为它应该被内联,你可以用inline告诉编译器。宏实际上只用于元编程。编译器比你更清楚。

关于c - 静态和内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10378442/

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