zhitian 发表于 昨天 09:28

请问嵌入式声明的变量作用域是怎么样的?

<火山程序 类型 = "通常" 版本 = 1 />

包 火山.程序

类 启动类 <公开 基础类 = 窗口程序类>
{
    方法 启动方法 <公开 类型 = 整数>
    {

      测试类B.方法_开始调用 ()

      方法_实例化测试类A ()
      返回 (1)
    }

    方法 方法_实例化测试类A
    {
      变量 实例化测试类A <类型 = 测试类A>
    }
}

# ===

类 测试类A
{

    # @ int uuyyttt = 299;
}

类 测试类B
{
    方法 方法_开始调用 <公开 静态>
    {
      变量 局部变量 <类型 = 整数>
      @ @<局部变量> = uuyyttt;
      可跳转调试输出 (局部变量)
    }
}



上面的代码我是在【测试类A】里面声明的变量,为何在测试类B里面可以直接使用?

Xelloss0618 发表于 昨天 10:01

火山代码翻译后的C++代码,结构一般是这样的:
1、每个类都有一个单独的头文件(.h);
2、每个火山源文件(.v、.wsc)生成一个 cpp 源文件;

你的嵌入变量 uuyyttt,没有用 <include></include> 包围,所以它并不是【测试类A】的成员变量,而是直接定义在 cpp 源文件里。
而你定义的两个类都在同一个火山源文件里,所以它们的实现代码在 cpp 源文件里的作用域是同级。

一代码农 发表于 昨天 10:53

通过生成的cpp上看,这个变量作用域属于命名空间,也就是说这个命令空间下的所有类都可以调用,是有点奇怪。

rinipp 发表于 昨天 11:35

全局,放在include下就不会了
页: [1]
查看完整版本: 请问嵌入式声明的变量作用域是怎么样的?