fix(FormatStringTest): ptr_var 注解改为 str | t.CPtr,匹配 c.Addr(s) 的实际类型 i8**
c.Addr(s) 取的是局部变量 s(str = i8*)的地址,结果是 i8**;与 INTPTR(= t.CInt | t.CPtr,int*,见 includes/stdint.vp) 层数与基座都不同,指针隐式转换收紧后(层数必须相同)原写法报 CastError。
This commit is contained in:
1 parent
cdc6e8bf78
commit
3645d00753
1 file changed
+4
-1
@@ -37,7 +37,10 @@ def main() -> int:
|
||||
print("Assigned: ", s)
|
||||
|
||||
# ctraits.isptr 编译时类型判断测试
|
||||
ptr_var: INTPTR = c.Addr(s)
|
||||
# c.Addr(s) 取的是局部变量 s(str = i8*)的地址,结果是 i8**(char**);
|
||||
# 与 INTPTR(= t.CInt | t.CPtr,int*,见 includes/stdint.vp)层数与基座都不同,
|
||||
# 且指针隐式转换已收紧(层数必须相同)⇒ 注解按实际类型写 str | t.CPtr(= i8**)。
|
||||
ptr_var: str | t.CPtr = c.Addr(s)
|
||||
val_var: int = 42
|
||||
if c.CIf(ctraits.isptr(ptr_var)):
|
||||
print("ptr_var is pointer")
|
||||
|
||||
Reference in new issue
Block a user