找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 106|回复: 0

[BUG提交] 调试报告:炫语言模块相同命名空间解析问题

[复制链接]

6

主题

5

回帖

125

积分

注册会员

积分
125
QQ
发表于 2024-9-23 10:28:55 | 显示全部楼层 |阅读模式
本帖最后由 bestkakkoii 于 2024-9-23 15:36 编辑


# 调试报告:炫语言模块相同命名空间解析问题

## 1. 问题描述

在项目中,使用了多个用C++编写的模块。当两个不同的C++模块使用相同的命名空间(英文名为cxx,中文别名为炫)时,出现了枚举、类或函数无法正常解析的问题。

### 1.1 具体症状

- 当两个C++模块(如模块A和模块B)使用相同的命名空间时:
  - 位于首先引入的模块中的类、函数、枚举可以被正确判断。
  - 位于随后引入的模块中的类、函数、枚举无法被正确判别。
- 交换模块引入顺序后,症状会相应变化,始终是先引入的模块中的内容可以被正确解析。

### 1.2 环境信息

- 模块实现语言:C++
- 项目结构:包含多个C++模块,这些模块使用相同的命名空间(英文名cxx,中文别名炫)

## 2. 问题复现步骤

1. 准备环境:
   - 准备两个用C++编写的模块(模块A和模块B)

2. 模块内容:
   - 在模块A中定义命名空间:
     ```cpp
     //@别名 炫
     namespace cxx {
       // 定义一些类、函数或枚举
       class ClassA {};
       void functionA() {}
       enum EnumA { ValueA1, ValueA2 };
     }
     ```
   - 在模块B中同样定义命名空间:
     ```cpp
     //@别名 炫
     namespace cxx {
       // 定义一些不同的类、函数或枚举
       class ClassB {};
       void functionB() {}
       enum EnumB { ValueB1, ValueB2 };
     }
     ```

3. 使用模块:
   - 场景1:
     - 首先引入模块A
     - 然后引入模块B
   - 场景2:
     - 首先引入模块B
     - 然后引入模块A

4. 尝试访问模块内容:
   - 使用完全限定名称访问模块A中cxx命名空间的内容
   - 使用完全限定名称访问模块B中cxx命名空间的内容

5. 观察结果:
   - 场景1:
     - 验证模块A中cxx命名空间的内容可以被正确访问
     - 验证模块B中cxx命名空间的内容无法被正确访问或解析
   - 场景2:
     - 验证模块B中cxx命名空间的内容可以被正确访问
     - 验证模块A中cxx命名空间的内容无法被正确访问或解析

## 3. 补充说明

- 此问题仅在两个或多个模块使用完全相同的命名空间(包括相同的英文名cxx和中文别名炫)时出现。
- 问题与模块的引入顺序直接相关,始终是先引入的模块中的命名空间内容可以被正确解析。
- 交换模块的引入顺序会导致可以被解析的内容相应变化,但问题模式保持一致。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|炫语言 | 炫彩界面库 | 用户所需, 正是我所做! ( 鄂ICP备2023014763号-1 )

GMT+8, 2024-11-21 16:36 , Processed in 0.070298 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表