【发布时间】:2012-08-23 07:36:17
【问题描述】:
在 c99 中,我的理解是比较两个不指向同一聚合的指针会导致未定义的行为。给定一个聚合 A、一个已知指向 A 内的指针 p_good 和一个可能指向也可能不指向 A 内的指针 p_unknown,是否有可能构造一个具有已定义行为的可移植测试,以确定比较 p_good 和p_unknown?
显然,这个测试本身不能违反比较指针的限制。
我怀疑答案是否定的,但我很乐意看到其他答案。
【问题讨论】:
-
“聚合”是什么意思?你到底想达到什么目的?
-
你有指向
A的指针吗?或者只是指向A的两个指针? -
@eq 在比较不同数组中的指针是否为相等时没有UB,但比较不同数组中的指针是否不相等是UB,即 , >=.
-
如果你有一个数组和一个候选指针,你可以比较(==)这个指针和每个可能的元素指针,看看它是否等于其中任何一个。所以,从技术上讲,答案是肯定的:)
标签: c pointers c99 undefined-behavior