gpt4 book ai didi

c - GCC __builtin_constant_p 总是返回 0

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:07 27 4
gpt4 key购买 nike

我有以下代码:

const int a = 10;
int b = __builtin_constant_p(a);
printf("%d\n", b);

输出为 0。我看过那个人,0 的值并不意味着 不是编译时间常量,只是 gcc 无法证明它是。无论如何,我可以让这个输出为 1 吗?

最佳答案

const 限定的变量不是 C 中的常量表达式,但 GCC 没有将 __builtin_constant_p 记录为确定参数是否为无论如何都是不断的表达。相反,它是 documented “确定一个值在编译时是否已知为常量,因此 GCC 可以对涉及该值的表达式执行常量折叠”。所以它应该可以用于您想要的。

问题几乎可以肯定只是你用 -O0(没有优化,默认)编译,在这种情况下,不会发生常量折叠,因为你关闭了它。打开优化(至少 -O1,但通常你需要 -O2-Os),它应该会做你想做的事。

关于c - GCC __builtin_constant_p 总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794096/

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