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