已开启
fix(hcomm): 将 EID 长度定义为 C 整数常量 #230
fix(hcomm): 将 EID 长度定义为 C 整数常量 #230
已开启
little_apple_12创建于 15 天前
15 天前

描述

include/hcomm/hcomm_res_defs.h:24 原将 COMM_ADDR_EID_LEN 定义为文件作用域 static const uint32_t 对象,而 CommAddr.eid 在第 157 行将其用作数组界;C11 不将该对象视为整数常量表达式,导致包含此公共头的 C11 translation unit 编译失败。本 PR 仅将该值改为同名匿名 enum 常量,数值仍为 16,使数组界符合 C11 规则,不改变 CommAddr 布局或运行时行为。

去重中命中的已关闭 PR #53 讨论 HCOMM 源码重组,并在未合入补丁中新增 include/aicpu/hcomm/hcomm_res_defs.h;本 PR 仅修正最新 master 已存在的 include/hcomm/hcomm_res_defs.h,不涉及该未合入的新路径。

关联的Issue

关联Issue #44

测试

在 fork 分支上执行以下静态 include-smoke 编译,输出均无诊断且退出码为 0:

printf '%s\n' '#include "hcomm/hcomm_res_defs.h"' 'int main(void) { return 0; }' | gcc -std=c11 -pedantic-errors -Iinclude -I/usr/local/Ascend/cann-9.1.0/x86_64-linux/include -x c -fsyntax-only -; printf 'target_c11_exit=%s\n' "$?"
printf '%s\n' '#include "hcomm/hcomm_res_entity_defs.h"' 'int main(void) { return 0; }' | gcc -std=c11 -pedantic-errors -Iinclude -I/usr/local/Ascend/cann-9.1.0/x86_64-linux/include -x c -fsyntax-only -; printf 'dependent_c11_exit=%s\n' "$?"
printf '%s\n' '#include "hcomm/hcomm_res_defs.h"' 'int main() { return 0; }' | g++ -std=c++17 -pedantic-errors -Iinclude -I/usr/local/Ascend/cann-9.1.0/x86_64-linux/include -x c++ -fsyntax-only -; printf 'target_cxx17_exit=%s\n' "$?"

实际输出:

target_c11_exit=0
dependent_c11_exit=0
target_cxx17_exit=0

rg -n 'COMM_ADDR_EID_LEN' include/hcomm/hcomm_res_defs.h 确认第 24 行为 enum { COMM_ADDR_EID_LEN = 16U };,第 157 行仍使用该值作为 eid 数组界。git diff --check 退出码为 0、无输出。未运行完整 CMake 构建或 NPU 测试;本缺陷由标准模式下的头文件编译检查直接验证,不需要 NPU。

文档更新

无独立文档改动;仅修正公共头文件中的长度常量定义。

类型标签

当前PR是否有AI参与:

[] 否
[x] 是
__1. Agent平台信息: Codex CLI 0.153.4
__2. 模型信息: gpt-5.6-luna
__3. Prompt摘要: 独立复核候选的 C11 编译失败和全量 issue/PR 去重;仅把 EID 长度改为 C 整数常量表达式,并用 C11、C++17 头文件编译检查验证。

希望检视人员了解:

  1. 人工参与说明:贡献者提供候选报告、基线和审核标准;本轮独立完成源码行号核对、C11/C++17 复现、全量分页去重、单点修复及静态验证,未运行 NPU。提交后由贡献者负责评审沟通与上游反馈。
likedislike
合并受阻
Llittle_apple_12
15 天前 创建了 pull request,commit b3ec4188
Llittle_apple_12
15 天前 关联了issue:[Bug-Report|缺陷反馈]: C11 编译 hcomm_res_defs.h 时 CommAddr.eid 数组成员声明失败
atomgit-bot
atomgit-bot
15 天前 评论:

变更摘要

本 PR 修正公共头文件 include/hcomm/hcomm_res_defs.h 中 EID 长度常量的定义形式:将文件作用域对象 static const uint32_t COMM_ADDR_EID_LEN = 16U; 改为同名匿名 enum 常量 enum { COMM_ADDR_EID_LEN = 16U };,数值仍为 16。目的是让该值成为 C11 意义上的整数常量表达式,从而在 CommAddr.eid 将其用作数组界时符合 C11 规则,使包含该头的 C11 translation unit 可正常编译;不改变 CommAddr 布局或运行时行为。

主要改动

  • 长度常量改为匿名 enum 常量:COMM_ADDR_EID_LEN 由 static const uint32_t 对象改成 enum { COMM_ADDR_EID_LEN = 16U };,使其成为整数常量表达式。
  • 保持取值与标识符不变:常量名仍为 COMM_ADDR_EID_LEN,数值仍为 16U,未改变对外暴露的名称与语义。
  • 满足数组界的 C11 约束:该值用于数组界时不再依赖文件作用域对象,从而兼容要求整数常量表达式的 C11 编译场景。
likedislike
不准确?
atomgit-bot
atomgit-bot
15 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
15 天前 添加了label:ai-co-authored
CANN-robotCANN-robot成员
15 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
15 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)

Module Approval Details

module lgtm status approve status
include ❌ (0/2)(You can also ask: hyolee, DragonBornHD84, houyuyang, 李东锋, bianque) ❌ (0/1)(You can also ask: 李东锋, zhanghao_0689)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

little_apple_12, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
little_apple_12
15 天前 评论:

compile

likedislike
Llittle_apple_12
15 天前 预合并成功(commit_id: 4c5d210fe5c814dae4806127aa6b4ea23f28fc9a)
CANN-robot
CANN-robot成员
15 天前 评论:
🚀 CI 流水线已启动
📋 执行详情: 点击查看流水线
likedislike
CANN-robotCANN-robot成员
15 天前 添加了label:ci-pipeline-running
CANN-robotCANN-robot成员
15 天前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
15 天前 添加了label:ci-pipeline-passed