从 LPVOID 转换为全局变量 - C

标签 c winapi struct

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

我已经尝试了以下但我收到错误提示 diceResult is an undeclared identifier

这是代码本身:

//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;
}

我不明白为什么当它显然是全局性的时候它不承认它在那里。

最佳答案

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

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

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

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

diceData diceResult;

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

当你让它工作时,我的建议是重写它,使其使用全局数据。

关于从 LPVOID 转换为全局变量 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2676804/

相关文章:

winapi - CreateFont的charset参数到底设置了什么?

c++ - 嵌套子窗口的缺点?

C++ 结构定义

C 交换二维数组中的元素

c - 相对于调用它的源文件映射宏

c# - 从服务启动用户 session 中的进程

c - 将结构指针或数组作为函数参数传递

c - c中的这个语句是什么意思?

c - 在 RTP 数据包中使用 FFmpeg 解码 AAC

c - mmap 在 Intel (i7) 和 Arm 上的不同行为?