PazeE 编译器(.NET 8/C# 实现),直接生成原生 x64/ARM64 机器码,无需 gcc/clang/nasm。 主要特性: - 词法/语法/语义分析、AST 生成、代码生成 - 目标平台:Windows (PE32+)、Linux (ELF64)、macOS (Mach-O 64)、Los4 - 架构:AMD64 与 ARM64 独立后端 - C 语法特性:匿名结构体/联合、位域、灵活数组成员、语句表达式+typeof - printf 颜色格式化、time.get.utc 时区支持 - GUI 支持:Windows (Win11 API)、Los4、Linux (X11)、macOS (ObjC) - Windows GUI 程序无控制台窗口(PE 子系统自动检测) - WiX Bundle 安装器(仅输出 .exe,MSI 作为中间产物内嵌)
40 行
1.1 KiB
Plaintext
40 行
1.1 KiB
Plaintext
// arrays.pe — 验证数组、索引、指针运算、字符串
|
|
int global_arr[5] = {10, 20, 30, 40, 50};
|
|
|
|
int main(void)
|
|
{
|
|
// 局部数组 + 索引赋值
|
|
int arr[5];
|
|
for (int i = 0; i < 5; i++) {
|
|
arr[i] = i * i;
|
|
}
|
|
int s = 0;
|
|
for (int i = 0; i < 5; i++) {
|
|
s += arr[i];
|
|
}
|
|
printf("arr sum = %d\n", s); // 0+1+4+9+16 = 30
|
|
|
|
// 全局数组读取
|
|
printf("global = %d %d %d\n", global_arr[0], global_arr[2], global_arr[4]); // 10 30 50
|
|
|
|
// 指针运算:p 指向 arr
|
|
int *p = arr;
|
|
printf("p[2] = %d\n", p[2]); // 4
|
|
printf("*(p+3) = %d\n", *(p + 3)); // 9
|
|
p++;
|
|
printf("*p = %d\n", *p); // 1
|
|
printf("p[-1] = %d\n", p[-1]); // 0
|
|
|
|
// 指针差
|
|
int *q = arr + 4;
|
|
printf("q-p = %d\n", q - p); // 4 - 1 = 3
|
|
|
|
// char 数组当字符串
|
|
char buf[8];
|
|
buf[0] = 'H'; buf[1] = 'i'; buf[2] = '!'; buf[3] = 0;
|
|
printf("buf = %s\n", buf); // Hi!
|
|
printf("len = %d\n", (int)strlen(buf)); // 3
|
|
|
|
return 0;
|
|
}
|