1

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

4

2 回答 2

3

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

于 2010-07-15T20:18:58.743 回答
3

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

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

于 2010-07-15T19:36:02.093 回答