gpt4 book ai didi

c++ - C++11 中的纯函数

转载 作者:可可西里 更新时间:2023-11-01 17:41:50 27 4
gpt4 key购买 nike

C++11 中的一个可以在 gcc 中以某种方式将函数(不是类方法)标记为 const 以表明它是并且不使用全局内存而只使用它的参数?

我已经尝试过 gcc__attribute__((const)),它正是我想要的。但是当在函数中触及全局内存时,它不会产生任何编译时错误。

编辑 1

请注意。我的意思是纯函数。 不是常数函数。 GCC 的属性有点困惑。纯函数只使用它们的参数。

最佳答案

你在寻找constexpr吗?这告诉编译器可以在编译时评估该函数。 constexpr 函数必须具有文字返回和参数类型,并且主体只能包含静态断言、typedef、using 声明和指令以及一个 return 语句。 constexpr 函数可以在常量表达式中调用。

constexpr int add(int a, int b) { return a + b; }

int x[add(3, 6)];

看过 __atribute__((const)) 的含义后,答案是否定的,你不能用标准 C++ 做到这一点。使用 constexpr 将实现相同的效果,但仅限于一组更有限的函数。但是,只要编译后的程序以相同的方式运行(as-if 规则),就没有什么可以阻止编译器自行进行这些优化。

关于c++ - C++11 中的纯函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674767/

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