给出一个保证为某种整数的#pragma
数据类型,如何使用可移植的C代码测试最高有效位的值?换句话说,我需要此函数的定义:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wtype-limits"
if (value < 0 || value >= 9) {
throw std::invalid_argument("some error message");
}
#pragma GCC diagnostic pop
但是这里有一个转折点:您不知道clock_t
的大小,也不知道它是带符号的还是无符号的(但假定“带符号”是二进制补码)。
我的第一个想法就是这样做:
bool is_msb_set(clock_t clock);
但是,如果clock_t
是一个带符号的值,则MSB的定义会溢出。也许我想得太多,但我很沮丧。