Run that with vanilla JavaScript, Java, SQL or anything but C/C++ [this is the premise of the protip] and I'll bake you a cake! (One that's not a lie;) Nothing that's discussed here does the same thing, though I completely agree there is a lot of better techniques for various tasks, nothing is functionally the same as the trick. (Why can I not reply the the reply of this post? I'm new here.)
Well, first, there is nothing preventing you from running JS or Java through the C preprocessor (and we did run JavaScript through it at my last job).
But there are equivalents for any programming language, but others here have already touched on them.
I'm not sure what SQL has built in, but I'd just use the C preprocessor if I needed that. However, I'd much rather not muck with my queries like that, because that will cause nasty surprises in production.
And I don't eat carbs, so your off the hook for a cake.
> Well, first, there is nothing preventing you from running JS or Java through the C preprocessor (and we did run JavaScript through it at my last job).
This is an interesting idea! What was the problem you were solving that required this?
---
I think actually the C preprocessor would solve a lot of the problems that, say, SCSS solves too:
// put these in a header file, 'cssutil.h'
#define HASH #
#define f(x) x
#define COLOR(c) f(HASH)c
#define PREFIXED(x, y) \
-webkit- ## x : y;\
-moz- ## x : y;\
-o- ## x : y;\
x : y
#define SHADOWED PREFIXED(box-shadow, 10px)
// then in your css
#include "cssutil.h"
#define THEME_BG COLOR(fff)
div.main {
background: THEME_BG;
SHADOWED;
}
There we go, pristine(ish) CSS, unsullied by magic constants and messy prefixes! (note that my preprocessor-fu is weak, I don't know how to do variadic prefixes)
Often times having a one-size-fits-all approach (especially across languages [!]) is not a good idea.
Different languages have different optimization techniques for removing code during compilation. Java, for example [1], can optimize out based on static boolean variables. I recommend learning more about each individual language and what it offers to get the best out of it.
However though, please read https://news.ycombinator.com/item?id=5626456 and summary is:
It is a trick, not a silver bullet. It prevents code from being compiled to the binary, in a portable - yet hacky - way.