that's a nice use of unreachable. if you know that a function will never return under certain conditions, you can put unreachable in the line after.
however! in this case, if printErrorAndExit always terminates the process, it might be better to change its return type. Zig has the type noreturn, which is the canonical uninhabited type, it's a type that has zero values (u8 has 256 possible values, bool has 2, void has 1, noreturn has 0)
it is used to indicate, in a type-system-aware manner, that some computation will diverge, and never terminate normally. a function that never returns (be it because it exits the process, or because it loops forever) can be marked noreturn, making the unreachable unneeded.
noreturn is a weird type to most programmers (most never heard of it!), and so many languages do not have such type within their type system. Zig also does not handle this type perfectly, some open proposals attempt to fix that. if you need further clarification feel free to @ me, there's also this Wikipedia article on it