gpt4 book ai didi

c++ - 寻址函数时数组下标的无效类型

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:59 25 4
gpt4 key购买 nike

我的代码:

.h 文件:

extern const int* g_position;

inline DWORD pos_x(BYTE v) {
if (1 <= v && v <= 3)
return g_position[v][0];

return 0;
}

inline DWORD pos_y(BYTE v) {
if (1 <= v && v <= 3)
return g_position[v][1];

return 0;
}

.cpp 文件:

const int* g_position = (int*) 0x86b2fdc;

我想做的是处理基本上是二维数组的函数:

(DWORD (*)[4][2]) 0x86b2fdc<g_position>

由于某种原因,我在编译时遇到以下错误:

In function 'gev::DWORD pos_y(BYTE)':
error: invalid types 'const int[int]' for array subscript
return g_position[v][0];

我的代码有什么问题?我将 g_position 声明为数组类型,因此它应该可以工作。

最佳答案

g_position 被声明为 int*,它只允许一个级别的取消引用,但您正在尝试执行两个取消引用。您需要将声明改为 int**:

extern const int** g_position;

const int** g_position = (int**) 0x86b2fdc;

更新:

int**int[][] 并不完全相同。但是,如果您考虑到 int[4][2]int[8] 具有相同的内存布局,那么您可以访问int[] 使用 int*,然后试试这个:

extern const int* g_position;

inline DWORD pos_x(BYTE v)
{
if (1 <= v && v <= 3)
return g_position[(v*4)+0];

return 0;
}

inline DWORD pos_y(BYTE v)
{
if (1 <= v && v <= 3)
return g_position[(v*4)+1];

return 0;
}

const int* g_position = (int*) 0x86b2fdc;

关于c++ - 寻址函数时数组下标的无效类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25151017/

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