Aussie AI
Compile-time self-testing macro wrappers
-
Book Excerpt from "Generative AI in C++"
-
by David Spuler, Ph.D.
Compile-time self-testing macro wrappers
Here's an idea for combining the runtime debug wrapper function idea
with some additional compile-time tests using static_assert
.
#define memset_wrapper(addr,ch,n) ( \ static_assert(n != 0), \ static_assert(ch == 0), \ memset_wrapper((addr),(ch),(n),__FILE__,__LINE__,__func__))
The idea is interesting, but it doesn't really work, because not all
calls to the memset
wrapper will have constant arguments for the character
or the number of bytes, so the static_assert
commands will fail in that case.
You could use standard assertions, but this adds runtime cost.
Note that it's a self-referential macro, but that C++ guarantees
it only gets expanded once (i.e., there's no infinite recursion of preprocessor macros).
• Next: • Up: Table of Contents |
The new AI programming book by Aussie AI co-founders:
Get your copy from Amazon: Generative AI in C++ |