代码之家  ›  专栏  ›  技术社区  ›  babipsylon

在C中创建div_t类型结构元素的数组++

  •  0
  • babipsylon  · 技术社区  · 1 年前

    我有一个结构(这与我的问题有点无关),在这个结构中,使用了DATE类型。

    typedef div_t DATE;
    
    #define ans         quot    /* (s)(l)div_t : .quot -> .ans...   */
    #define mois        rem     /* ... et .rem -> .mois : plus parlant  */
    

    DATE的类型为div_t,包含一年作为quot,一个月(mois)作为rem(…:))

    无论如何

    我想为这个DATA(div_t)类型制作一个元素数组。

    这似乎如下所示:

    DATE tx_tech_variable_dates_vec[8] = {0, 0}; /* code testing  */
    

    然而,我不知道如何将元素(year/quot,mois/rem)分配给这个数组:

    这不起作用:

        DATE tx_tech_variable_dates_vec[0].quot = { 2026, 06 }; /* code testing  */
        DATE tx_tech_variable_dates_vec[0].rem = { 2026, 06 }; /* code testing  */
        //DATE tx_tech_variable_dates_vec[1].ans = { 2026, 07 }; /* code testing  */
        //DATE tx_tech_variable_dates_vec[1].mois = { 2026, 07 }; /* code testing  */
    
        //DATE tx_tech_variable_dates_vec[1] = { 2032, 06 }; /* code testing  */
    

    知道如何创建一个“DATE”/div_t元素数组并为其分配元素(quot,rem)吗?

    我也试过这样做:

    在同一.cpp文件中,我有以下几行代码:

     double tx_tech_variable_vec[8] = { 0 }; 
     tx_tech_variable_vec[0] = 3.0;
     tx_tech_variable_vec[1] = 1.5;
    
     DATE tx_tech_variable_dates_vec[8] = { 0, 0 }; 
     DATE tx_tech_variable_dates_vec[1] = { 2026, 07 };
    

    出现此错误:

    行严重性代码描述项目文件禁止显示状态 4680错误C2369“tx_tech_variable_dates_vec”:重新定义;不同的 下标

    对于 tx_tech_variable_vec 它似乎很好用,但对DATE来说不行。

    回复一些意见:

    是的,我知道这不是最好的方法,但是的,在我使用的程序中有90000行代码,它们已经使用了这种DATE结构和这种数组方式来处理事情。因此,仅仅为了添加几行代码,我不会引入向量,也不会去掉宏,也不会发明另一种与其他代码(确实非常可疑)不兼容的DATE类型。

    1 回复  |  直到 1 年前
        1
  •  2
  •   Miles Budnek    1 年前

    分配给数组元素与分配给非数组变量没有什么不同。例如 tx_tech_variable_dates_vec[0] = { 2026, 06 }; 将分配给值 { 2026, 06 } 的第一个元素 tx_tech_variable_dates_vec .

    请注意,这是任务。您正在修改现有的数组元素以匹配给定的值。创建数组时,它将已经被零初始化或默认初始化(取决于初始化数组的方式)。


    如果你想 初始化 中的元素 tx_tech_variable_dates_vec 创建数组时,可以在数组的初始化器中包含要初始化的元素的初始化器。

    例如,以下将初始化的前三个元素 tx_tech_variable_dates_vec 具有给定的值:

    DATE tx_tech_variable_dates_vec[8] = {
        { 2026, 06 }, { 2026, 12 }, { 2027, 03 }
    };
    

    请注意,任何未提供初始值设定项的元素都将被零初始化。