diff --git a/common.h b/common.h index 1bf5642..8bd2f6a 100644 --- a/common.h +++ b/common.h @@ -61,6 +61,9 @@ /* Allows different macros using "_" nested with each other. */ # define nest(v1, v2, b) { clone(v1, v2) b } +/* Cast Var "var" into builtin type in C specified with "type". */ +# define cast(var, type) (*(type *)var.addr) + // # define lambda(param, body, capfmt, ...) {\ // /* Duplicate everything from cap. */\ // va_list ptr;\ diff --git a/test.c b/test.c index 13b25f1..20e03b4 100644 --- a/test.c +++ b/test.c @@ -53,7 +53,8 @@ Status Main(void) fail(Array_Create(&arr, 8, sizeof(long long))); for (register int i = 0; i < arr.len; i++) { - (void)printf("%d:\t%p\n", i, arr.members[i].addr); + cast(arr.members[i], long long) = INT64_MAX; + (void)printf("%lld\n", cast(arr.members[i], long long)); } Array_Delete(&arr);