| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(hcomm): 将 EID 长度定义为 C 整数常量 Co-authored-by: little_apple_12<020716ljh@gmail.com> # message auto-generated for no-merge-commit merge: !230 merge fix/asc-comm-2026-09-26-001-eid-c-array-bound into master fix(hcomm): 将 EID 长度定义为 C 整数常量 Created-by: little_apple_12 Commit-by: little_apple_12 Merged-by: cann-robot Description: ## 描述 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: bash 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' "$?" 实际输出: text 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。 ## 文档更新 无独立文档改动;仅修正公共头文件中的长度常量定义。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ### 当前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。提交后由贡献者负责评审沟通与上游反馈。 See merge request: cann/asc-comm!230 | 7 小时前 |