带有内联函数的 const 参数

标签 c parameter-passing constants inline-functions

我有一个 inline 函数,它根据输入参数进行一些初始化,我想知道我是否应该为参数使用 const 关键字,这会启用编译器做一些更多的优化?例如这个伪代码:

inline void init(ENUM1 e1, ENUM2 e2, bool b1, bool b2, ENUM3 e3)
{
    if (b1) { … }

    switch (e2) {
      …
    }

    // And so on…
}

编辑:

关于同一件事的另一个问题。当此函数 init() 被调用时,调用将被替换为该函数内的整个代码,还是仅替换为适合参数的部分。例如,如果 b1 为真,调用将被替换为 if (b1) { … } 还是仅替换为 if 括号中的代码。 switch 也一样吗?

这就是我的意思,如果添加 const 会有帮助的话。

最佳答案

const,无论是否用于内联 代码,都不太可能排除 优化,但不一定允许更多优化。但如果它适用,没有充分的理由不告诉编译器,以便它可以充分利用该信息。

更新:因为即使是内联代码也是在编译时生成的,所以它不能根据任何参数的值进行调整,因为它是未知的。

关于带有内联函数的 const 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27202661/

相关文章:

java - 开发阶段如何保证Java类中常量值的唯一性?

C 字符串内存分配,C 字符串表

C:数学常数的枚举 VS #define?

c - 映射区域中的 malloc

gradle - 在Gradle上参数化任务的最佳方法是什么?

Python:如何使用变量传递参数名称

c - 为什么这段代码从 fork 开始执行 printf 8 次?

Django 使用 AJAX 传递参数

c - 指向数组的指针与指向 'const' 数组的指针不兼容?

constants - SystemVerilog 无法识别常量 : Error: Range must be bounded by constant expression