I would use an enum. Booleans are bad, because they don't tell you what true means. And specifically named functions are bad, because you cannot pass them through the codebase as data (without resorting to entirely functional patterns).
I mean, your examples are in C, which has shit enums that are just integers, so at runtime you won't know either what a 1 is without context.
And I believe the compiler doesn't stop you either from passing a different enum or just an integer into a parameter with that enum as type.
But at least it'll be written in the code what you hope to get passed, so...
