Приведение к глобальной переменной из LPVOID - C - PullRequest
1 голос
/ 20 апреля 2010

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

Я пробовал следующее, но я получаю ошибки, говорящие, что diceResult - это необъявленный идентификатор

Вот сам код:

//Structure to hold dice data
typedef struct diceData
{
    int dice1;
    int dice2;
};

struct diceResult;

DWORD WINAPI UnpackDiceData(LPVOID sentData)
{
    //Unpack data
    struct diceData unpackedData = *((struct diceData*)sentData);

    diceResult.dice1 = unpackedData.dice1;
    diceResult.dice2 = unpackedData.dice2;
}

Я не понимаю, почему он не узнает, что он там, когда он явно глобален.

1 Ответ

1 голос
/ 20 апреля 2010
typedef struct diceData
{
    int dice1;
    int dice2;
};

Ваш typedef ничего не делает.Обычно вы используете это что-то вроде:

typedef struct { 
    int dice1;
    int dice2;
} diceData;

Затем вы можете определить экземпляр этого типа:

diceData diceResult;

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

Если у вас это работает, мой совет - переписать его, чтобы он не использовал глобальные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...