如何知道为union设置了哪个变量值?

我正在努力优化项目.它包含一个选项结构,用户可以在其中一次选择一个选项.除了该选项之外,我们还使用标志变量来检查为此记录设置的选项值.
     为了提高内存效率,我想将struct转换为union.但是,我如何知道联合中设置了哪个变量值.因为联合中没有限制来获取甚至未设置的变量值.

struct options{
     int basicPay;
     int lumsumPay;
     int mothlyPay;
     int weeklyPay;
     int dailyPay;
     int anualPay;

     int payType;   // Flag variable to check which option is selected
 };

union OptimizeOptions{
    int basicPay;
    int lumsumPay;
    int mothlyPay;
    int weeklyPay;
    int dailyPay;
    int anualPay;

    int payType;   // Confuse at here
 };
你在结构中尝试过一个联合吗?让我们看看以下示例等效:

union options{
  int basicPay;
  int lumsumPay;
  int mothlyPay;
  int weeklyPay;
  int dailyPay;
  int anualPay;
};

struct record{
  union options op;   // Options union
  int payType;   // Flag variable to check which option is selected
}

union(选项)将为其最大变量保留内存,您可以设置其值,您的结构(记录)将跟踪该联合内存块,并且可以设置payType标志值,这将告诉您的程序获取特定变量工会

相关文章
相关标签/搜索