我想在编译时知道指针类型的值范围。 limits.h
仅指定纯数类型的最大值和最小值。我不想使用硬编码常量,我不想使用sizeof(foo*)
计算最大值。
答案 0 :(得分:3)
我相信我会使用intptr_t。它被定义为可以保存指针值的整数,因此intptr_t的最小值/最大值应该起作用。
可能大于实际指针的值。但是根据你对一个只需要最小/最大值的类的解释,我认为你不需要完全准确。
答案 1 :(得分:3)
指针不是数字。特别是,它们不是绝对有序的 - 给定两个随机指针p
和q
,你不能从另一个中减去一个并得到一个有意义的结果 - 它是UB,除非它们都指向同一个对象(malloc
内存块,静态或自动对象等)。因此,在标准C ++中,允许的指针范围的概念是没有意义的。