当前位置: 首页 > 知识库问答 >
问题:

使用int或枚举值访问结构字段

凤凡
2023-03-14

我目前使用的日志记录系统使用一个标记值来标识它将存储的参数。我们正在使用的格式如下:标签+时间+值。

/* Struct definitions */
typedef struct _Profiles {
    int32_t param1;
    int32_t param2;
    int32_t param3;
    int32_t param4;
    int32_t param5;
    int16_t param6;
    int32_t param7;
    uint32_t param8;
    int32_t param9;
    int32_t param10;
    uint32_t param11;
    int32_t time;
/* @@protoc_insertion_point(struct:Profiles) */
} Profiles;
profiles.param5 = 1500
profiles.time  = 1345643 

不要忘记结构的每个字段可能具有不同的类型。

共有1个答案

苏乐
2023-03-14

我的方法是将指针指向每个字段,如下所示。

int *ptr[11] = {&profiles.param1, &profiles.param2,  &profiles.param3,,,,,, &profiles.param11};

当消息到达时,我将使用ptr更新字段。

  *ptr[tag-1] = 1500; //tag-1 because ptr[4] points to profiles.param5
 类似资料:
  • 枚举具有名为'hash value'的属性,该属性是枚举内的索引。

  • 问题内容: 我不确定两者中哪个最好定义常量。结构或枚举。每次我使用或不使用结构都会被复制吗?当我想到带有常量的结构时,我认为它会一直复制是没有意义的。但是,如果它不会被复制,那我拿走什么都没关系? 选择结构或枚举有什么优势? 问题答案: 结构和枚举均起作用。例如,两者 和 工作并定义静态属性。 回复:每次我使用与否,都会复制一个结构吗? 这两个和是值类型,以便将适用于枚举为好。但这 无关紧要 ,因

  • 问题内容: 通过阅读SCJP书籍,我在第1章“自测”中发现了类似的内容: 注意:代码编译正常。我不明白的是为什么我们可以从变量访问DOG,CAT或FISH常量。我认为(并且也写在书中)DOG,FISH,CAT是常量,其实现方式类似于。 所以,如果它们确实是静态的,为什么我们可以从中访问它们呢?最后一行是我熟悉的方式。 问题答案: 写作 和写作一样。也就是说,编译器将用其编译时类型Animal替换变

  • 我有一种情况,我试图对一些数据进行二进制解码,数据类型既有数值,也有字符串值和名称。我正在考虑使用枚举,例如: 然而,我也知道: 或者举另一个例子: 是否有一种方法可以将此结构重构为枚举,以便我用整数值构造枚举,但我将枚举“读”为字符串?我很确定答案是否定的。

  • 问题内容: 什么是C#的Java等价物: 问题答案: 如果需要属性,则需要这样定义: 您可以这样使用它: 要意识到的是,这只是创建类的捷径,因此您可以向该类添加所需的任何属性和方法。 如果您不想在自己的方法上定义任何方法,则可以更改成员变量的范围并进行设置,但这不是它们在Sun网站上的示例中所做的。

  • 问题内容: 我在声明枚举时遇到麻烦。我要创建的是一个“ DownloadType”的枚举,其中有3种下载类型(AUDIO,VIDEO,AUDIO_AND_VIDEO)。 我已经实现了如下代码: 如果我再像这样使用它,则效果很好: 但是,我希望这样,所以我不必要求“值”。我可能会弄错,但这是Java中几个类(例如Font)工作的方式,例如,设置字体样式,您可以使用: 它返回一个int值,我们不使用: