代码之家  ›  专栏  ›  技术社区  ›  Jamie Keeling

从lpvoid-c强制转换为全局变量

  •  1
  • Jamie Keeling  · 技术社区  · 14 年前

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

    我试过以下方法,但说的时候出错了 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 回复  |  直到 14 年前
        1
  •  1
  •   Jerry Coffin    14 年前
    typedef struct diceData
    {
        int dice1;
        int dice2;
    };
    

    你的 typedef 什么都没做。通常你会使用它,比如:

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

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

    diceData diceResult;
    

    …和 然后 您的其他代码应该能够使用该实例。

    如果你有这样的工作,我的建议是重写它 使用全局数据。