gcc c ++中__attribute((const))的值/目的

问题描述 投票:0回答:1

在声明编译器可以看到的函数或静态成员不访问全局内存时,在gcc中为c ++程序使用__attribute((const))是否有任何价值?

例如

int Add( int x , int y ) __attribute((const))
{
    return x+y;
}

编译器知道此函数的内存访问范围受到限制。该属性是否添加任何内容?如果是这样,什么?

谢谢,

乔什

gcc optimization attributes g++
1个回答
1
投票

GNU C中的[__attribute__((const))表示函数作者的意图是不依赖于其输入参数以外的任何值。

这允许编译器将具有对该函数相同参数的多个调用优化为单个调用,而不必分析函数主体。如果函数的主体位于另一个翻译单元中,则此功能特别有用。

__attribute__((const))的情况下,对多个调用,例如int Add( int x , int y ) __attribute__((const)),可以合并为一个调用,并且可以缓存返回值,而无需知道Add(2,3)的实际作用。

它还允许编译器验证函数是否确实符合声明的意图。

有关更多详细信息和示例,请参考Add。>>

© www.soinside.com 2019 - 2024. All rights reserved.