繁体   English   中英

在C中扩展结构字段

[英]Expanding struct fields in C

假设我有这个结构,该结构在给用户的sim.h头文件中定义:

    typedef struct {
    cmd cmd;      /// The processed command in each pipe stage
    intt src1;
    int src2;  /// Actual value of src2 (considering forwarding mux, etc.)
} PipeStage;

现在假设我要在sim.c文件中扩展它的字段。我该怎么办?

 typedef struct pipeStage{
    cmd cmd;
    pc_t PCofCmd;
    int src1;
    int src2;
    int dstVal;
} PipeState;

可能吗?

正如Weather Vane在评论中所述,您可以定义一个新struct ,其中一个(或多个)字段属于其他struct类型:

typedef struct {
    cmd cmd;      /// The processed command in each pipe stage
    int src1;
    int src2;  /// Actual value of src2 (considering forwarding mux, etc.)
} PipeStage;

typedef struct pipeStage{
    // cmd cmd;
    // int src1;
    // int src2;
    PipeStage stage; // or it might be a pointer: PipeStage *p_stage;
    pc_t PCofCmd;
    int dstVal;
} PipeState;

注意

如果字段的顺序很重要,并且pc_t PCofCmd应该在cmd cmd; 那么您没有太多选择,只能定义一个新struct

typedef struct pipeStage{
    cmd cmd;
    pc_t PCofCmd;
    int src1;
    int src2;
    int dstVal;
} PipeState;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM