在C ++中确定指针限制的惯用方法是什么?

时间:2010-07-15 19:12:15

标签: c++ pointers limits

我想在编译时知道指针类型的值范围。 limits.h仅指定纯数类型的最大值和最小值。我不想使用硬编码常量,我不想使用sizeof(foo*)计算最大值。

2 个答案:

答案 0 :(得分:3)

我相信我会使用intptr_t。它被定义为可以保存指针值的整数,因此intptr_t的最小值/最大值应该起作用。

可能大于实际指针的值。但是根据你对一个只需要最小/最大值的类的解释,我认为你不需要完全准确。

答案 1 :(得分:3)

指针不是数字。特别是,它们不是绝对有序的 - 给定两个随机指针pq,你不能从另一个中减去一个并得到一个有意义的结果 - 它是UB,除非它们都指向同一个对象(malloc内存块,静态或自动对象等)。因此,在标准C ++中,允许的指针范围的概念是没有意义的。