【问题标题】:Overlaying a struct onto a u_char pointer将结构覆盖到 u_char 指针上
【发布时间】:2010-01-14 01:29:38
【问题描述】:

我的教授告诉我,我们可以在内存中的指针上放置一个结构(强制转换),以便更容易地解释数据。我今天在课堂上问了这个问题,他说这是可行的。

这不是在编译抱怨它如何无法转换它。 我究竟做错了什么?我将求助于手动解析数据...

struct DataStruct
{
    u_char DEST_ADDRESS[6];
    u_char SOURCE_ADDRESS[6];
};

struct DataStruct* testData;
testData = (struct DataStruct*)pkt_data;

【问题讨论】:

  • 编译器给你什么错误?你能构建一个不依赖于任何未说明/遗漏的完整(但很小)的测试用例吗?
  • 你怎么有一个6字节的地址?那是 48 位架构吗?
  • @Tarydon - MAC 地址(以太网、802.11 等)为 48 位。
  • pkt_data的数据类型是什么?

标签: c++ casting struct


【解决方案1】:

你不能有一个函数之外的语句。

变化:

struct DataStruct* testData;               // definition okay outside function
testData = (struct DataStruct*)pkt_data;   // statement not okay outside function

到:

struct DataStruct* testData = (struct DataStruct*)pkt_data;  // definition with
                                                             // initializer okay
                                                             // outside function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多