找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[其他教程] 炫语言AI辅助之基础语法手册

[复制链接]

7

主题

12

回帖

131

积分

注册会员

积分
131
QQ
发表于 前天 22:47 | 显示全部楼层 |阅读模式
本帖最后由 yyz513 于 2025-6-29 22:59 编辑

根据官方文档个人收集整理,错误之处大佬请指点勿喷


文件下载位于底部  炫语言AI知识库:https://ima.qq.com/wiki/?shareId ... 238fdadbb3e81f4670e

# 炫语言手册之基础语法篇 v1.0

## 目录
1. [主要特色功能](#主要特色功能)
2. [语法关键字](#语法关键字)
3. [数据类型](#数据类型)
4. [变量声明](#变量声明)
5. [运算符](#运算符)
6. [控制结构](#控制结构)
7. [函数定义](#函数定义)
8. [结构体定义](#结构体定义)
9. [类定义](#类定义)
10. [数组语法](#数组语法)
11. [字符串处理](#字符串处理)
12. [调试输出](#调试输出)
13. [命名规范](#命名规范)
14. [代码组织](#代码组织)
15. [最佳实践](#最佳实践)

---

## 主要特色功能

### 1. 缩进和作用域规则 ⭐重要
炫语言通过 **TAB键缩进** 进行代码块对齐,类似Python语言格式:

- **缩进规则**:
  - 使用TAB键进行缩进,不能使用空格
  - 0缩进的代码为全局作用域(全局函数或变量)
  - 通过缩进确定代码是全局还是局部,或子集块
  - 可通过对齐辅助线查看代码缩进

- **作用域确定**:
  - 炫语言通过缩进确定作用域,C/C++通过花括号对"{}"确定作用域
  - 作用域限定了代码的有效范围
  - 省略了大括号对"{}",通过鼠标右键菜单可以进行相关操作

- **空行处理**:
  - 对于空行可使用`[pass]`关键字占位

```xc
// 全局作用域(0缩进)
整型 g_globalVar = 0

函数 整型 全局函数()
    返回 0

// 局部作用域(TAB缩进)
函数 整型 测试函数()
        整型 localVar = 10      // TAB缩进
        如果 localVar > 5
                调试输出("大于5")    // 双重TAB缩进
                返回 localVar
        否则
                调试输出("小于等于5")
                返回 0
        [pass]  // 空行占位

// 类定义(TAB缩进)
类 我的类
        整型 m_memberVar    // TAB缩进
        函数 构造()
                m_memberVar = 0  // 双重TAB缩进
```

### 2. 中文编程特色
- 支持中文函数名、变量名
- 提供丰富的中文关键字
- 每个英文函数都有对应的中文别名
- 代码可读性强,适合中文用户

### 3. 编码处理
- 默认使用Unicode编码(文本型)
- 支持ANSI编码(文本型A)
- 提供编码转换函数:`W2A()`, `A2W()`
- 支持UTF-8字符串:`U"UTF8字符串"`

---

## 语法关键字

### 程序入口关键字
```xc
函数 整型 入口函数()        // 控制台程序入口
函数 整型 入口函数_窗口()    // 窗口程序入口
函数 整型 入口函数_动态库()  // DLL程序入口
```

### 数据类型关键字
```xc
// 整数类型
字节型       // 1字节,0-255
短整型       // 2字节,-32768-32767
整型         // 4字节,-2147483648-2147483647
长整型       // 8字节
正短整型     // 2字节,0-65535
正整型       // 4字节,0-4294967295
正长整型     // 8字节

// 浮点类型
小数型       // 4字节浮点数
双浮点型     // 8字节浮点数

// 字符类型
字符型       // Unicode字符(双字节)
字符型A      // ANSI字符(单字节)

// 字符串类型
文本型       // Unicode字符串(双字节)
文本型A      // ANSI字符串(单字节)

// 其他类型
逻辑型       // 布尔值(真/假)
字节集       // 二进制数据容器
空类型       // 无返回值类型
```

### 控制结构关键字
```xc
如果         // 条件判断
否则         // 否则分支
分支判断     // 多分支判断
分支         // 分支选项
其他         // 默认分支
跳出         // 跳出循环或分支
循环         // 条件循环
计次循环     // 计数循环
变量循环     // for循环
列表循环     // 遍历循环
到循环尾     // 跳到循环末尾
循环判断首   // 循环开始
循环判断尾   // 循环结束
```

### 函数和类关键字
```xc
函数         // 函数定义
返回         // 函数返回值
类           // 类定义
继承         // 类继承
结构体       // 结构体定义
公开         // 公开成员
私有         // 私有成员
静态         // 静态成员
常量         // 常量定义
```

### 容器关键字
```xc
动态数组     // 动态数组容器
字典         // 键值对容器
迭代器       // 迭代器类型
```

---

## 数据类型

### 基本数据类型
| 类型名 | 大小 | 范围 | 说明 | 示例 |
|--------|------|------|------|------|
| `字节型` | 1字节 | 0-255 | 无符号8位整数 | `字节型 b = 255` |
| `短整型` | 2字节 | -32768-32767 | 有符号16位整数 | `短整型 s = 1000` |
| `整型` | 4字节 | -2147483648-2147483647 | 有符号32位整数 | `整型 i = 100000` |
| `长整型` | 8字节 | -9223372036854775808-9223372036854775807 | 有符号64位整数 | `长整型 l = 1000000000` |
| `正短整型` | 2字节 | 0-65535 | 无符号16位整数 | `正短整型 us = 50000` |
| `正整型` | 4字节 | 0-4294967295 | 无符号32位整数 | `正整型 ui = 3000000000` |
| `正长整型` | 8字节 | 0-18446744073709551615 | 无符号64位整数 | `正长整型 ul = 9000000000000000000` |
| `小数型` | 4字节 | ±3.4E-38-±3.4E+38 | 32位浮点数 | `小数型 f = 3.14f` |
| `双浮点型` | 8字节 | ±1.7E-308-±1.7E+308 | 64位浮点数 | `双浮点型 d = 3.14159` |
| `逻辑型` | 4字节 | 真/假 | 布尔值 | `逻辑型 flag = 真` |

### 字符串类型
| 类型名 | 编码 | 说明 | 示例 |
|--------|------|------|------|
| `文本型` | Unicode | 双字节字符串,默认类型 | `文本型 str = "Hello World"` |
| `文本型A` | ANSI | 单字节字符串 | `文本型A strA = A"Hello World"` |
| `字符型` | Unicode | 双字节字符 | `字符型 ch = 'A'` |
| `字符型A` | ANSI | 单字节字符 | `字符型A chA = A'A'` |

### 复合数据类型
| 类型名 | 说明 | 示例 |
|--------|------|------|
| `字节集` | 二进制数据容器 | `字节集 data` |
| `动态数组<类型>` | 动态数组 | `动态数组<整型> numbers` |
| `字典<键类型,值类型>` | 键值对容器 | `字典<文本型,整型> map` |

---

## 变量声明

### 变量声明规则
```xc
// 1. 全局变量(文件顶部)
整型 g_globalVar = 0
文本型 g_appName = "应用名称"

// 2. 局部变量(函数内部)
函数 整型 测试函数()
    整型 localVar = 10      // 局部变量
    文本型 name = "测试"     // 局部变量
    返回 localVar

// 3. 成员变量(类内部)
类 我的类
    整型 m_memberVar    // 成员变量
    文本型 m_name       // 成员变量
```

### 变量初始化
```xc
// 基本类型初始化
整型 number = 100
双浮点型 price = 99.99
逻辑型 flag = 真
文本型 name = "张三"

// 数组初始化
整型 numbers[5] = {1, 2, 3, 4, 5}
动态数组<整型> list = {1, 2, 3, 4, 5}

// 结构体初始化
点坐标 point = {100, 200}
```

### 常量定义
```xc
// 常量定义
常量 整型 MAX_SIZE = 100
常量 文本型 APP_NAME = "应用名称"
常量 浮点型 PI = 3.14159f

// 宏定义
#宏定义 宽度 10
#宏定义 高度 5
#宏定义 换行 "\n"
```

---

## 运算符

### 算术运算符
```xc
+     // 加法
-     // 减法
*     // 乘法
/     // 除法
%     // 取余
++    // 自增
--    // 自减
```

### 比较运算符
```xc
==    // 等于
!=    // 不等于
>     // 大于
<     // 小于
>=    // 大于等于
<=    // 小于等于
```

### 逻辑运算符
```xc
&&    // 逻辑与 (且)
||    // 逻辑或 (或)
!     // 逻辑非 (取反)
```

### 位运算符
```xc
&     // 按位与
|     // 按位或
^     // 按位异或
~     // 按位取反
<<    // 左移
>>    // 右移
```

### 赋值运算符
```xc
=     // 赋值
+=    // 加法赋值
-=    // 减法赋值
*=    // 乘法赋值
/=    // 除法赋值
%=    // 取余赋值
&=    // 按位与赋值
|=    // 按位或赋值
^=    // 按位异或赋值
<<=   // 左移赋值
>>=   // 右移赋值
```

### 字符串运算符
```xc
+     // 字符串连接
文本型 result = "Hello" + " " + "World"  // "Hello World"
```

---

## 控制结构

### 条件判断
```xc
// 简单if语句
如果 条件
    执行代码

// if-else语句
如果 条件
    执行代码1
否则
    执行代码2

// 多重条件判断
如果 条件1
    执行代码1
否则 条件2
    执行代码2
否则 条件3
    执行代码3
否则 条件4
    执行代码4
否则
    执行默认代码
```

### 分支判断
```xc
// 基本分支判断
分支判断(变量)
    分支(值1)
        执行代码1
        跳出
    分支(值2)
        执行代码2
        跳出
    其他
        执行默认代码
        跳出

// 实际示例
整型 score = 85
分支判断(score)
    分支(90)
        调试输出("优秀")
        跳出
    分支(80)
        调试输出("良好")
        跳出
    分支(60)
        调试输出("及格")
        跳出
    其他
        调试输出("不及格")
        跳出
```

### 循环语句
```xc
// 基本循环
循环 条件
    循环体

// 计数循环
计次循环 整型 i = 0; 次数
    循环体

// 变量循环(for循环)
变量循环(整型 i = 0; i < 10; i++)
    循环体

// 列表循环(遍历数组)
列表循环 整型 i = 0; 数组
    循环体

// 范围循环
循环 i = 0 到 数组.取大小() - 1
    循环体

// 循环控制
跳出        // 跳出循环
到循环尾    // 跳到循环末尾
```

### 实际示例
```xc
// 条件判断示例
整型 score = 85
如果 score >= 90
    调试输出("优秀")
否则 score >= 80
    调试输出("良好")
否则 score >= 60
    调试输出("及格")
否则
    调试输出("不及格")

// 循环示例
整型 i
循环 i = 1 到 10
    调试输出("第", i, "次循环")

动态数组<整型> numbers = {1, 2, 3, 4, 5}
列表循环 整型 i = 0; numbers
    调试输出("数字:", numbers)

// 九九乘法表示例
变量循环(整型 乘数 = 1; 乘数 <= 9; 乘数++)
    变量循环(整型 被乘数 = 1; 被乘数 <= 乘数; 被乘数++)
        控制台_格式输出("%d*%d=%d\t", 被乘数, 乘数, 乘数 * 被乘数)
    控制台_格式输出("\n")
```

---

## 函数定义

### 基本语法
```xc
函数 返回类型 函数名(参数列表)
    函数体
    返回 值
```

### 函数示例
```xc
// 无参数函数
函数 整型 获取随机数()
    返回 取随机数(1, 100)

// 有参数函数
函数 整型 加法(整型 a, 整型 b)
    返回 a + b

// 带默认参数的函数
函数 整型 取最小值_默认值(整型 参数A = 200, 整型 参数B = 100)
    如果 (参数A > 参数B)
        返回 参数B
    否则
        返回 参数A

// 引用参数函数
函数 逻辑型 读取文件(文本型 path, 字节集 &data)
    如果 文件是否存在(path)
        文件类 file
        如果 file.打开(path)
            data = file.读取到字节集()
            file.关闭()
            返回 真
    返回 假

// 重载函数
函数 整型 最大值(整型 a, 整型 b)
    返回 如果 a > b 则 a 否则 b

函数 双浮点型 最大值(双浮点型 a, 双浮点型 b)
    返回 如果 a > b 则 a 否则 b
```

### 函数类型定义
```xc
// 定义函数类型
#函数类型 整型(WINAPI * 函数类型1)(整型, 整型)

// 实现函数
函数 整型 WINAPI Add(整型 a, 整型 b = -1)
        调试输出("add()")
        返回 a + b

// 使用函数类型
函数 整型 入口函数_窗口()
        函数类型1 函数指针 = Add  // 定义变量接收指定类型函数地址
        整型 ret = 函数指针(1, 2)  // 通过地址调用函数
        调试输出(ret)
        返回 0
```

---

## 结构体定义

### 基本结构体
```xc
// 结构体定义
结构体 点坐标
    整型 x
    整型 y

结构体 文件信息
    文本型 文件名
    整型 文件大小
    整型 创建时间
    逻辑型 是否只读

// 带构造函数的结构体
结构体 我的炫语言程序
    文本型 作者名称
    文本型 类型
    整型  字数
    整型  ID
    // 定义构造函数并设置默认值
    函数 空类型 构造()
        作者名称 = "1"
        类型 = "2"
        字数 = 3
        ID = 6
```

### 结构体使用
```xc
// 使用结构体
点坐标 点1
点1.x = 100
点1.y = 200

文件信息 文件
文件.文件名 = "test.txt"
文件.文件大小 = 1024
文件.创建时间 = 1234567890
文件.是否只读 = 假

// 结构体初始化
我的炫语言程序 女朋友1
女朋友1.作者名称 = "易团雪"
女朋友1.类型 = "都市.言情"
女朋友1.字数 = 100000
女朋友1.ID = 0001

我的炫语言程序 女朋友2 = {"李四", "都市", 12, 123}

// 结构体数组
动态数组<我的炫语言程序> 女朋友输出
如果 (女朋友输出.取大小() == 0)
    变量循环(整型 i = 0; i < 20; i++)
        女朋友输出.添加({"易团雪" + 到文本(i), "标签二" + 到文本(i), i, 10})
```

### 结构体作为函数参数
```xc
// 结构体参数传递
函数 整型 函数_我的程序(我的炫语言程序 参数_程序)
    调试输出(参数_程序.作者名称, 参数_程序.类型, 参数_程序.字数, 参数_程序.ID)
    返回 0

// 调用函数
函数_我的程序(女朋友1)
```

---

## 类定义

### 基本类定义
```xc
// 基本类定义
类 自定义类名A
        整型 _成员变量1
        
        函数 构造()
                _成员变量1 = 10
        
        函数 析构()
                占位
        
        函数 整型 Add(整型 a, 整型 b)
                返回 a + b

// 类继承
类 子类名 继承 父类名
    成员变量
    成员函数
```

### 访问控制
```xc
// 公开和私有成员
类 我的房间
    整型  房间宽度 = 13  // 公开成员,外部可以访问
    整型  房间高度 = 15
    整型  房间长度 = 10
    文本型 物品 = "我的西服"

    // 通过成员函数的方式来读取私有成员
    函数 整型 拿钱出去消费()
        返回 我的钱包

    函数 空类型 赚钱回来(整型 赚钱)
        我的钱包 = 我的钱包 + 赚钱

    函数 整型 取体积()
        整型 体积 = 房间高度 * 房间宽度 * 房间长度
        返回 体积

    私有
    整型 我的钱包 = 1000000  // 私有成员,外部不可以访问
```

### 类使用示例
```xc
// 将类实例化具体变量
自定义类名A A1
调试输出(A1._成员变量1)
整型 返回值 = A1.Add(1, 2)

// 将结构体实例化具体变量
结构体A A2
A2.宽度 = 10
A2.高度 = 20
调试输出(A2.宽度, A2.高度)

// 房间类使用
我的房间 房间1
房间1.赚钱回来(100)
房间1.房间宽度 = 130
调试输出(房间1.拿钱出去消费(), 房间1.取体积())
```

---

## 数组语法

### 静态数组
```xc
// 一维数组
整型 numbers[10]
整型 scores[5] = {85, 90, 78, 92, 88}

// 二维数组
整型 matrix[3][3]
整型 grid[2][2] = {{1, 2}, {3, 4}}

// 访问数组元素
numbers[0] = 100
整型 value = scores[2]
matrix[1][1] = 5

// 数组遍历
变量循环(整型 i = 0; i < 5; i++)
    调试输出(scores)

// 二维数组遍历
变量循环(整型 i = 0; i < 2; i++)
    变量循环(整型 j = 0; j < 2; j++)
        调试输出("第", i, "行", "第", j, "列", grid[j])
```

### 动态数组
```xc
// 声明动态数组
动态数组<整型> numbers
动态数组<文本型> names
动态数组<字节型> data

// 添加元素
numbers.添加(1)
numbers.添加(2)
numbers.添加(3)

// 访问元素
整型 value = numbers[0]

// 获取大小
整型 size = numbers.取大小()

// 清空数组
numbers.清空()

// 删除元素
numbers.删除(1)        // 删除索引1的元素
numbers.删除(1, 2)     // 从索引1开始删除2个元素

// 插入元素
numbers.插入(1, 100)   // 在索引1位置插入100

// 重设大小
numbers.重设大小(10)   // 设置数组大小为10

// 遍历数组
列表循环 整型 i = 0; numbers
    调试输出(numbers)

计次循环 整型 i = 0; numbers.取大小()
    调试输出(numbers)
```

### 字典容器
```xc
// 声明字典
字典<文本型, 整型> map
字典<整型, 文本型> reverseMap

// 添加键值对
map["aaa"] = 1
map["bbb"] = 2
map["ccc"] = 3

// 访问值
整型 value = map["aaa"]

// 获取大小
整型 size = map.取大小()

// 查找元素
迭代器 iter = map.查找("aaa")
如果 iter == map.空值()
        调试输出("未找到")
否则
        调试输出("找到")

// 遍历字典
列表循环 迭代器 iter; map
        调试输出("key: ", iter.键, " value: ", iter.值)

// 函数参数传递
函数 空类型 函数参数传递(字典<文本型, 整型> map_a)
        整型 a = map_a["aaa"]
        整型 数量 = map_a.取大小()
        占位
```

---

## 字符串处理

### 字符串声明和初始化
```xc
// Unicode字符串
文本型 str1 = "Hello World"
文本型 str2 = "你好世界"

// ANSI字符串
文本型A str3 = A"Hello World"

// UTF-8字符串
文本型A str4 = U"我是UTF8字符串"

// 字符串连接
文本型 result = str1 + " " + str2
```

### 字符串操作
```xc
文本型 text = "Hello World"

// 获取长度
整型 len = text.取大小()

// 获取字符
字符型 ch = text[0]

// 子字符串
文本型 sub = text.取子文本(0, 5)  // "Hello"

// 查找
整型 pos = text.查找("World")

// 替换
text.替换("World", "炫语言")

// 分割
动态数组<文本型> parts = 文本分割(text, " ")

// 大小写转换
文本型 upper = text.到大写()
文本型 lower = text.到小写()

// 去除空格
文本型 trimmed = text.去除空格()

// 字符串截取
文本型 left = 文本取左边(text, 5)      // "Hello"
文本型 right = 文本取右边(text, 5)     // "World"
文本型 sub1 = 文本取中间(text, 0, 5)   // "Hello"
文本型 sub2 = 文本取中间2(text, 0, 5)  // "Hello"
文本型 sub3 = 文本取中间3(text, "Hello", "World") // " "

// 字符串查找
整型 pos1 = 文本取子文本位置(text, "World")      // 6
整型 pos2 = 文本取子文本位置2(text, "World", 0)  // 6
整型 pos3 = 文本取子文本位置右边(text, "o")      // 7
整型 pos4 = 文本取子文本位置右边2(text, "o", 5)  // 7

// 字符串替换
文本型 replaced = 文本替换(text, "World", "炫语言")  // "Hello 炫语言"
文本型A replacedA = 文本替换A(A"Hello World", A"World", A"炫语言")

// 字符串插入
文本型 inserted = 文本插入(text, 5, " Beautiful ")  // "Hello Beautiful World"
文本型A insertedA = 文本插入A(A"Hello World", 5, A" Beautiful ")
```

### 字符串转换
```xc
// 数值转字符串
文本型 numStr = 到文本(123)
文本型 floatStr = 到文本(3.14)

// 字符串转数值
整型 num = 到整数("123")
双浮点型 price = 到双浮点("99.99")

// 编码转换
文本型A ansiStr = W2A("Unicode字符串")  // Unicode转ANSI
文本型 unicodeStr = A2W(A"ANSI字符串")  // ANSI转Unicode

// 字符串连接
文本型 result = "ABC" + "123" + "456"
文本型A resultA = A"ABC" + A"123" + A"456"

// 路径字符串
文本型 路径1 = "D:\\abc\\data\\123.txt"  // 路径需要加转义符'\'
文本型 路径2 = R"(D:\abc\data\123.txt)"  // R"(原始字符串 不转义路径)"

// UTF-8字符串
文本型A utf8字符串 = U"我是UTF8字符串"
```

### 字符型操作
```xc
// 字符型A 通常只占据 1 个字节,字符型 占据 2 个字节或 4 个字节的空间
// 一个字母或一个阿拉伯数字占 1 个字节,一个中文占 2 个字节

字符型A x[6] = {'X', 'l', 'a', 'n', 'g', '\0'}  // 单字节字符数组
字符型 x2[12] = {'炫', '语', '言', '真', '好','玩'}  // 双字节字符数组
字符型 x3[] = "炫语言牛逼3"  // 双字节字符串

// 字符型A=单字节 主要存储单个字符,而 字符型=双字节 主要存储中文,韩文,日文等
```

---

## 调试输出

### 基本调试输出
```xc
// 基本调试输出 - 自动分割参数
调试输出("Hello", 123, 3.14)  // 输出: Hello, 123, 3.14

// 不分割参数的调试输出
调试输出2("Hello", 123, 3.14)  // 输出: Hello1233.14

// 格式化调试输出
调试输出格式化("字符串: %s, 整数: %d, 浮点数: %.2f", "测试", 100, 3.14159)
调试输出格式化A(A"字符串: %s, 整数: %d, 浮点数: %.2f", A"测试", 100, 3.14159)
```

### 数据调试输出
```xc
// 十六进制调试输出
字节型 data[4] = {0x12, 0x34, 0x56, 0x78}
调试输出十六进制(data, 4)  // 输出: 12 34 56 78
调试输出十六进制(data, 4, 假, 假)  // 输出: 12345678

// 十进制调试输出
调试输出十进制(data, 4)  // 输出: 18 52 86 120

// 二进制调试输出
调试输出二进制(data, 4)  // 输出: 10010 110100 1010110 1111000
```

### 控制台输出
```xc
// 控制台输出
控制台_置中文编码()
控制台_格式输出("Hello %s, 数字: %d\n", "World", 123)
控制台_格式输出A(A"Hello %s, 数字: %d\n", A"World", 123)

// 控制台输入
字符型A input[256] = {0}
控制台_标准输入A(input, 256)  // 读取ANSI字符串
调试输出("输入内容:", input)

// 控制台暂停
控制台_暂停()  // 等待用户按键
```

---

## 命名规范

### 变量命名规范
```xc
// 全局变量:g_前缀
整型 g_globalVar
文本型 g_appName

// 成员变量:m_前缀
整型 m_memberVar
文本型 m_fileName

// 局部变量:无前缀
整型 localVar
文本型 fileName

// 常量:全大写
常量 整型 MAX_SIZE = 100
常量 文本型 APP_NAME = "应用名称"
```

### 函数命名规范
```xc
// 函数命名:动词+名词
函数 整型 获取文件大小(文本型 path)
函数 逻辑型 保存配置()
函数 空类型 清空数据()

// 类命名:名词
类 文件管理器
类 数据库连接

// 变量命名:描述性名称
整型 文件大小
文本型 用户名
逻辑型 是否成功
```

### 文件命名规范
```xc
// 源文件:.xc
main.xc          // 主源文件
common.xh        // 预编译头文件
exe.rc           // 资源文件
main.xml         // UI布局文件
style.css        // 样式文件
resource.res     // 资源文件
```

---

## 代码组织

### 1. 代码组织
```xc
// 1. 头文件包含
#包含 "common.xh"

// 2. 常量定义
常量 整型 MAX_SIZE = 100
常量 文本型 APP_NAME = "我的应用"

// 3. 全局变量
整型 g_globalVar = 0

// 4. 类定义
类 我的类
    成员变量
    成员函数

// 5. 函数定义
函数 整型 我的函数()
    返回 0

// 6. 程序入口
函数 整型 入口函数()
    返回 0
```

### 2. 文件结构
```xc
// common.xh - 预编译头文件
//预编译头文件, 提高修改代码时的编译速度
//将不常修改的内容放在此文件中
//包含外部头文件,库文件(lib)
//申明外部函数, 变量, 宏, 枚举, 数据类型等

// main.xc - 主源文件
#包含 "common.xh"
// 主要代码逻辑

// 项目文件结构
项目名.xcproj    // 项目文件
main.xc          // 主源文件
common.xh        // 预编译头文件
exe.rc           // 资源文件
exe.ico          // 图标文件
main.xml         // UI布局文件(窗口程序)
style.css        // 样式文件(窗口程序)
resource.res     // 资源文件(窗口程序)
```

### 3. 注释规范
```xc
// 单行注释
// 这是单行注释

// 多行注释
/*
这是多行注释
可以跨越多行
*/

// 函数注释
// 函数说明:计算两个数的和
// 参数:a - 第一个数,b - 第二个数
// 返回值:两数之和
函数 整型 加法(整型 a, 整型 b)
    返回 a + b

// 类注释
// 类说明:房间类,用于管理房间信息
// 作者:张三
// 日期:2024-01-01
类 我的房间
    成员变量
    成员函数
```

---

## 最佳实践

### 1. 缩进和代码格式 ⭐重要
```xc
// ✅ 正确的缩进格式
函数 整型 测试函数()
        整型 localVar = 10      // 使用TAB缩进
        如果 localVar > 5
                调试输出("大于5")    // 双重TAB缩进
                返回 localVar
        否则
                调试输出("小于等于5")
                返回 0

// ❌ 错误的缩进格式(使用空格)
函数 整型 错误示例()
   整型 localVar = 10      // 使用空格缩进,错误!
   如果 localVar > 5
      调试输出("大于5")     // 使用空格缩进,错误!
```

**缩进注意事项**:
- 必须使用TAB键进行缩进,不能使用空格
- 缩进决定了代码的作用域
- 可以通过IDE的对齐辅助线查看缩进层级
- 空行可以使用`[pass]`关键字占位

### 2. 错误处理
```xc
// 始终检查函数返回值
如果 文件是否存在("test.txt")
    文件类 file
    如果 file.打开("test.txt")
        // 处理文件
        file.关闭()
    否则
        调试输出("文件打开失败")
否则
    调试输出("文件不存在")
```

### 3. 资源管理
```xc
// 使用RAII模式管理资源
文件类 file
如果 file.打开("test.txt")
    // 使用文件
    // 自动关闭
否则
    调试输出("文件打开失败")
```

### 4. 性能优化
```xc
// 避免频繁字符串连接
文本型 result
result.添加("Hello")
result.添加(" ")
result.添加("World")

// 预分配数组大小
动态数组<整型> numbers
numbers.重设大小(1000)  // 预分配空间
```

### 5. 调试技巧
```xc
// 使用调试输出
调试输出("变量值:", variable)
调试输出("函数执行到:", __函数名__)

// 条件调试
#ifdef DEBUG
    调试输出("调试信息")
#endif

// 格式化输出
调试输出("结果: %d", 100)
调试输出("价格: %.2f", 99.99)
```

### 6. 编码规范
```xc
// 函数命名:动词+名词
函数 整型 获取文件大小(文本型 path)
函数 逻辑型 保存配置()
函数 空类型 清空数据()

// 类命名:名词
类 文件管理器
类 数据库连接

// 变量命名:描述性名称
整型 文件大小
文本型 用户名
逻辑型 是否成功
```

---

## 常见问题

### 1. 缩进和语法问题
**Q: 为什么我的代码编译失败?**
A: 检查以下几点:
- 确保使用TAB键进行缩进,不能使用空格
- 检查缩进是否正确对齐
- 确保没有多余的空格或制表符

**Q: 如何确定代码的作用域?**
A:
- 0缩进的代码为全局作用域
- 每增加一个TAB缩进,作用域就深入一层
- 可以通过IDE的对齐辅助线查看缩进层级

**Q: 空行如何处理?**
A: 可以使用`[pass]`关键字占位,或者直接留空行

### 2. 编码问题
- 使用 `文本型` 处理Unicode字符串
- 使用 `文本型A` 处理ANSI字符串
- 使用 `U"字符串"` 定义UTF-8字符串
- 使用 `W2A()` 和 `A2W()` 进行编码转换

### 3. 内存管理
- 动态数组会自动管理内存
- 文件类会自动关闭文件
- 注意及时释放手动分配的资源

### 4. 线程安全
- 使用临界区保护共享资源
- 使用互斥体进行线程同步
- 使用事件对象进行线程通信

---

**版本**: 1.0  
**更新日期**: 2025年6月29日  
**适用版本**: 炫语言最新IDE版本  
**作者**: ゞ龍ㄙ吻
下载:

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-7-1 10:44 , Processed in 0.074847 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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