GNU C和C ++提供const
和pure
函数属性。从gnu online docs(强调我的):
在GNU C和C ++中,您可以使用函数属性来指定某些函数属性,这些属性可以帮助编译器优化调用或更仔细地检查代码的正确性。例如,您可以使用属性来指定函数从不返回(不返回),仅根据其参数的值(const)返回值或具有printf样式的参数(格式)。
其中const属性似乎是pure的超集,也取自gnu docs:
const属性对函数的定义比纯属性相似。声明相同具有const和pure属性的函数将被诊断。
使用C ++ 11,添加了constexpr
specifier。
当应用于函数时,const属性和constexpr说明符之间有区别吗? GCC是否应用了不同的优化?
类似的问题是constexpr
。但是我认为这不是重复的。我的问题特别是关于函数属性Difference between `constexpr` and `const`的,该属性似乎与const
具有重叠的功能。