[1/3] 我们组里模型验证相关工具普遍使用的 SMV 语言里的数组是支持负数下标的,多年来我一直在想怎么才能完美地把它映射到 C 语言上,结果还真的被我想到了。其实 C 编译器在遇到诸如 b[-50] 这样的表达式时最多只给一个警告(-Warray-bounds),本质上代码等价于 *(b-50)。只要确保相关的内存地址已分配就不会有任何问题。如果是在结构体里,我只需在这个数组前面再多定义一个足够长的数组成员。如果是普通变量,只需先定义 a[100] 再让另一个指针 b = a+50,这样负偏移量就没问题了。


