gpt4 book ai didi

c++ - 访问带有负数的数组!

转载 作者:IT老高 更新时间:2023-10-28 22:32:04 27 4
gpt4 key购买 nike

我正在将一个非常大型且非常古老(25 年!)的程序从 C 转换为 C++。

其中有很多(非常非常多)我使用各种整数索引访问全局一维 UBYTE 数组的地方。有时这个指数可能是负数。

我有时(但并非总是)困住了这种情况并确保没有出现任何问题,但作为一个安全带和大括号的措施,我实际上是在确保在数组之前还有另一 block 内存并填充它时遇到了麻烦使用正确的值,这样如果我不小心忽略了捕获负数条件,那么仍然会在数组访问中获取正确的答案。这实际上工作了很多年。

但现在在 C++ 下,访问带有负数的数组的行为似乎有所不同,现在我的程序表现不佳。我修复了一个未处理负数的情况,程序似乎运行良好,但我很担心我没有捕获所有负数,并且可能会出现问题。

所以我现在的问题是,有没有办法在运行时让我检测到访问具有负索引的数组的任何实例?如果有人能提出答案,我会印象深刻。如果你很确定它不能以任何自动化方式完成,那么告诉我这也是有值(value)的信息。

我应该补充一点,我还不是真正的 C++ 程序员。到目前为止,我所做的只是让程序在 C++ 编译器下编译的绝对最低限度(几乎没有)。因此,如果您的答案涉及花哨的“仅限专家,C++ 解决方案”,那么请尝试用一个音节的语言进行解释,或者给我一个链接,以便我查找。

最佳答案

你能用重载 operator[] 的对象替换全局一维 ubyte 数组吗?使用 int 输入的绝对值可能会解决您的一些问题。

编辑:根据数组的使用模式(无指针恶作剧),使用带有重载 operator[] 的对象实际上对数组的用户来说是完全透明的,因此我的建议是。

关于c++ - 访问带有负数的数组!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1420972/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com