Closed
round op_host/round_tiling.h include guard 宏名不匹配,保护失效 #3453
eieieiAdd on  Oct 9Closed at  25 days ago
eieiei
eieiei
Oct 9 Create

现象

experimental/math/round/tests/ut/op_host/round_tiling.h 的 include guard 宏名不匹配:

#ifndef ROUND_TILING_DEF_H
#define ROUND_TILING_DATA_H__TILING_DEF_H
...
#endif // ROUND_TILING_DEF_H

#ifndef 判断的是 ROUND_TILING_DEF_H,但 #define 定义的却是另一个符号 ROUND_TILING_DATA_H__TILING_DEF_H。于是 ROUND_TILING_DEF_H 永远不会被定义,头文件被多次 include 时保护失效(重复展开,可能触发重复定义/重定义告警)。

影响

include guard 形同虚设;该头一旦被多次包含(经不同 include 链),宏/结构体重复定义。

期望

让 #define 与 #ifndef 使用同一符号(如二者都用 ROUND_TILING_DEF_H)。

旧 PR(#5931/#5879)被关闭未合并,master 现仍不匹配(已核对 origin/master),以 Issue 登记。

likedislike
陈思
陈思Collaborators
Oct 9 Comments:

您好,感谢反馈!核对 cann/ops-math 提交 9e6334a5 的 round_tiling.h 后,确认 #ifndef ROUND_TILING_DEF_H 与下一行的 #define 不一致;同文件又声明了 RoundCompileInfo,因此重复包含时无法依靠这个保护宏阻止再次展开,可能导致结构体重定义。

一个可行的修正是将 #define 统一为 ROUND_TILING_DEF_H,与现有 #ifndef 和结尾注释保持一致。这是 Host UT 头文件的保护问题,是否出现编译错误取决于实际包含链。

likedislike
Xxujiachen8Collaborators
25 days ago Associated pull request
Xxujiachen8Collaborators
25 days ago Close issue
CANN-robotCANN-robotCollaborators
25 days ago Added label: resolved