#include #if defined(USEVOID) #define TYPE void #else #define TYPE int #endif TYPE *base; void func(TYPE* ptr) { #if !defined(USEVOID) printf("%ld\n", ((void*)ptr) - ((void*)base)); #endif printf("%ld\n", ptr - base); } int main(int argc, char argv[]) { base = &argc; #if defined(SAFEPTR) func(&base[6]); #else func(base + 6); #endif return 0; }