gpt4 book ai didi

c++ - 如何让我的 C++ 编译器发出一个 constexpr 值(例如警告?)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:33 25 4
gpt4 key购买 nike

(这有点像 XY problem,但请耐心等待。)

我收到关于偏移量太大的编译警告。现在,为了对此进行诊断,我希望我的编译器以某种方式发出用作移位量的 constexpr 值。

到目前为止,我的做法是尝试使用我知道可以放置在范围之外的数字参数来实例化一个类型,然后添加我想要的 constexpr 值并得到一个显示总和的错误。但这是一个丑陋的黑客。有没有办法将 constexpr 值(希望不仅仅是整数)发送到标准错误流?例如连同一些解释性文字或警告消息?

我问的是 GCC 6.x 及更高版本以及 clang 4.x 及更高版本。

最佳答案

好吧,显而易见的方法与您所说的类似——让编译器在发出诊断时提及该值。

constexpr int I = 8 % 3;

template<int i>
class TheValueYouWantIs { static_assert(i != i); };


int main() {
TheValueYouWantIs<I>();
}

因此:

prog.cpp: In instantiation of ‘class TheValueYouWantIs<2>’:
prog.cpp:8:27: required from here
[...less informative stuff...]

警告显然更依赖于编译器,但应该很容易实现。不过,这种事情对 char 数组没有帮助。不是一个完整的解决方案。

关于c++ - 如何让我的 C++ 编译器发出一个 constexpr 值(例如警告?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47893243/

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