【问题标题】:Casting to global variable from LPVOID - C从 LPVOID 转换为全局变量 - C
【发布时间】:2010-04-20 16:21:26
【问题描述】:

我正在尝试将数据从传递给我的方法的参数转换为结构,我需要将数据传递给全局变量,因为它在我的应用程序的其他地方需要。

我尝试了以下方法,但我收到错误消息说 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;
}

我不明白为什么当它显然是全球性的时它不会识别它的存在。

【问题讨论】:

    标签: c winapi struct


    【解决方案1】:
    typedef struct diceData
    {
        int dice1;
        int dice2;
    };
    

    您的typedef 没有做任何事情。通常你会像这样使用它:

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

    然后你可以定义一个该类型的实例:

    diceData diceResult;
    

    ... 并且 then 您的其他代码应该能够使用该实例。

    当你有这个工作时,我的建议是重写它,以便它使用全局数据。

    【讨论】:

    • 感谢您的回答,我一定会尝试消除对全局变量的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    相关资源
    最近更新 更多