stage1 重构测试且成功00-05
This commit is contained in:
35
stage1/test13_extern.spl
Normal file
35
stage1/test13_extern.spl
Normal file
@@ -0,0 +1,35 @@
|
||||
/* ===== 模块6:函数 =====
|
||||
* test13_extern — 外部 VM 函数与字符串
|
||||
* 难度:2/5
|
||||
* 验证点:#[extern("vm")] 声明、vm_printf 调用、
|
||||
* 字符串字面量、字符串参数传递
|
||||
*/
|
||||
#[extern("vm")] fn vm_printf(fmt: *u8, ...) void;
|
||||
#[extern("vm")] fn vm_strlen(s: *i8) i32;
|
||||
#[extern("vm")] fn vm_strcmp(a: *i8, b: *i8) i32;
|
||||
|
||||
fn main() i32 {
|
||||
/* vm_printf 输出测试 */
|
||||
vm_printf("hello spl\n");
|
||||
vm_printf("%d %d %d\n", 1, 2, 3);
|
||||
vm_printf("chars: %c%c\n", 'A', 'B');
|
||||
|
||||
/* 字符串字面量用于 extern */
|
||||
var len := vm_strlen("hello");
|
||||
if len != 5 { ret 1; }
|
||||
|
||||
/* 字符串比较 */
|
||||
var cmp := vm_strcmp("abc", "abc");
|
||||
if cmp != 0 { ret 2; }
|
||||
|
||||
var cmp2 := vm_strcmp("abc", "def");
|
||||
if cmp2 == 0 { ret 3; }
|
||||
|
||||
/* 字符串作为格式化参数 */
|
||||
vm_printf("string test: %s %s\n", "foo", "bar");
|
||||
|
||||
/* vm_printf 返回 void(不关心返回值)*/
|
||||
vm_printf("all extern tests done\n");
|
||||
|
||||
ret 0;
|
||||
}
|
||||
Reference in New Issue
Block a user