【问题标题】:Dealing with dynamic integer types in C?在 C 中处理动态整数类型?
【发布时间】:2011-01-19 12:03:24
【问题描述】:

我正在用 C 语言开发一个 Python 模块,它解析一个非常有效的协议,该协议使用动态整数大小。使用此协议发送的整数的大小范围可以从相当于 C 的“短”到“长长”。

协议有一个字节指定要发送的变量的类型(从短到长),但我不确定如何在代码中处理这个问题。现在,我正在设置一个 void 指针并按照发送值的大小分配内存——然后使用 atoi、atol 和 atoll 来设置该指针。问题是,我需要能够访问该值,如果不稍后强制转换,我将无法访问。

有什么好的方法来处理这个问题?

【问题讨论】:

    标签: c memory dynamic variables


    【解决方案1】:

    要么始终将其存储在本地 long long 中,要么将其放在由大小标志和所有可能类型的 union 组成的 struct 中。

    【讨论】:

    • 我对如何使用结构/联合有点困惑。有一个简单的例子吗?
    • 那么当您在代码中访问它时,您总是将联合转换为 long long 吗?还是您必须关闭该标志并相应地投射?
    • 您关闭.flag 并读取相应的成员(.ubyte.ulong 等)。
    • 非常感谢!将坚持在本地使用 long longs。
    • 与使用联合的第二部分相比,此答案的第一部分(始终使用 long long)对您来说会更容易而不会造成任何损失。
    猜你喜欢
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2022-10-07
    • 2015-05-05
    • 1970-01-01
    • 2023-03-10
    • 2010-10-31
    相关资源
    最近更新 更多