Недопустимые типы WORD [int] для индекса массива

Полегче со мной, я все еще новичок в C / C ++. Я знаю, что об этом спрашивали несколько раз, и я пытался следовать приведенным решениям, но безрезультатно. Этот код предназначен для процессора NetBurner, DWORD 32-разрядный без знака, WORD 16-разрядный без знака.

заголовок func.h:

class funcs
{
// ...
private:
void myfunc();
WORD data001;
DWORD data002[100];
DWORD data003[100];

// ...
}

У меня есть эта функция, которая вызывает эти данные в моем классе, funcs.cpp. Предположим, что все переменные были инициализированы:

void funcs::myfunc()
{
data001++;
data002[data001] = x;   // random x for this example
data003[data001] = y;
}

Мой компилятор жалуется: «ошибка: недопустимые типы ‘DWORD [WORD] для индекса». Я изменил тип индекса массива на «int», «unsigned int» и любой другой тип, который мог придумать, и все еще получаю ошибку. Я попробовал решения, приведенные в предыдущих постах:

void funcs::myfunc()
{
data001++;
this->data002[data001] = x;   // random x for this example
this->data003[data001] = y;
}

но это было безрезультатно. Я также пытался содержать определение myfunc в классе, та же ошибка. Есть идеи / решения? Я в тупике. Спасибо, парни!!

Изменить: типы данных, представленные в заголовочном файле:

typedef unsigned char BOOL;
typedef unsigned char BOOLEAN;
typedef unsigned char BYTE; /* Unsigned  8 bit quantity */
typedef signed   short SHORT;/* Signed   16 bit quantity  */
typedef unsigned short WORD; /* Unsigned   16 bit quantity  */
typedef unsigned long DWORD;/* Unsigned 32 bit quantity  */
typedef signed   long LONG; /* Signed   32 bit quantity  */

typedef volatile unsigned char VBOOLEAN;
typedef volatile unsigned char VBYTE;  /* Unsigned  8 bit quantity  */
typedef volatile short VSHORT; /* Signed   16 bit quantity */
typedef volatile unsigned short VWORD;  /* Unsigned   16 bit quantity */
typedef volatile unsigned long VDWORD; /* Unsigned 32 bit quantity   */
typedef volatile signed   long VLONG;  /* Signed   32 bit quantity   */

Скриншот:

Скриншот

-1

Решение

Ваш реальный код (расшифрованный со скриншота):

DWORD u_data002;
WORD  u_data003;

u_data002[u_data_003] = whatever;

который пытается индексировать целое число, как если бы это был массив или указатель.

Предположительно, либо u_data002 должен быть массив, или вы хотели написать что-то другое, чем u_data002,

2

Другие решения


По вопросам рекламы [email protected]