Aussie AI
Pointers versus Integer Sizes
-
Book Excerpt from "Generative AI in C++"
-
by David Spuler, Ph.D.
Pointers versus Integer Sizes
You didn't hear this from me, but apparently you can store pointers in integers, and vice-versa, in C++ code. Weirdly, you can even get paid for doing this. But it only works if the byte sizes are big enough, and it's best to self-test this portability risk during program startup. What exactly you want to test depends on what you're (not) doing, but here's one example:
// Test LONGs can be stored in pointers yassert(sizeof(char*) >= sizeof(long)); yassert(sizeof(void*) >= sizeof(long)); yassert(sizeof(int*) >= sizeof(long)); // ... and more
Note that a better version in modern C++ would use “static_assert
” to test these sizes at compile-time,
with zero runtime cost.
static_assert(sizeof(char*) >= sizeof(long)); static_assert(sizeof(void*) >= sizeof(long)); static_assert(sizeof(int*) >= sizeof(long));
In this way, you can perfectly safely mix pointers and integers in a single variable. Just don't tell the SOC compliance officer.
• Next: • Up: Table of Contents |
The new AI programming book by Aussie AI co-founders:
Get your copy from Amazon: Generative AI in C++ |