You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中创建并赋值DATE(div_t)类型数组?

问题背景

项目中使用的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(或宏ans)用于存储年份,rem(或宏mois)用于存储月份。

需要创建DATE类型数组,但在赋值时遇到多种错误,包括结构体成员赋值语法错误、重复定义数组导致的编译报错。

错误尝试示例

以下赋值写法均无法正常工作:

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

// 错误:单个结构体成员不能用花括号赋值
DATE tx_tech_variable_dates_vec[0].quot = { 2026, 06 }; 
DATE tx_tech_variable_dates_vec[0].rem = { 2026, 06 }; 
// DATE tx_tech_variable_dates_vec[1].ans = { 2026, 07 }; 
// DATE tx_tech_variable_dates_vec[1].mois = { 2026, 07 }; 

// 错误:不能在数组定义后用DATE重声明单个元素
DATE tx_tech_variable_dates_vec[1] = { 2032, 06 }; 

另一种写法触发编译错误:

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 }; // 触发C2369错误

错误信息:

Line Severity Code Description Project File Suppression State
4680 Error C2369 'tx_tech_variable_dates_vec': redefinition; different subscripts

正确解决方案

由于不能修改DATE类型定义或引入新容器,需遵循C语言结构体数组的赋值规则:

1. 数组初始化时直接赋值

在数组定义阶段,通过结构体初始化列表为元素赋值,支持使用项目宏别名ans/mois或原始成员名quot/rem:

// 使用原始成员名
DATE tx_tech_variable_dates_vec[8] = {
    {.quot = 2026, .rem = 6},
    {.quot = 2026, .rem = 7},
    // 剩余元素自动初始化为0
};

// 使用宏别名,贴合现有代码风格
DATE tx_tech_variable_dates_vec[8] = {
    {.ans = 2026, .mois = 6},
    {.ans = 2026, .mois = 7},
    // 剩余元素默认初始化为0
};

2. 数组创建后逐个元素赋值

数组定义完成后,直接通过下标访问结构体成员赋值,无需重复声明DATE:

DATE tx_tech_variable_dates_vec[8] = {0}; // 初始化所有元素为0

// 使用原始成员名赋值
tx_tech_variable_dates_vec[0].quot = 2026;
tx_tech_variable_dates_vec[0].rem = 6;

// 使用宏别名赋值(推荐,和项目现有代码风格一致)
tx_tech_variable_dates_vec[1].ans = 2026;
tx_tech_variable_dates_vec[1].mois = 7;

C2369错误说明

该错误是因为数组定义后,又用DATE tx_tech_variable_dates_vec[1]重复声明数组,编译器判定为重复定义且下标不一致。正确做法是像double数组赋值那样,直接访问数组元素(去掉前缀DATE)进行赋值。

内容的提问来源于stack exchange,提问作者babipsylon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 22:25:10