С помощью GCC вы можете сделать что-то вроде следующего:
void __attribute__((error("Whoa. It's the future"))) whoa_the_future();
void check_for_the_future() {
// "Feb 1 2011"
const char *now = __DATE__;
if (now[9] >= '2')
whoa_the_future();
}
Способ работает так, что атрибут error
указывает GCC генерировать
ошибка времени компиляции, если какие-либо вызовы этой функции остались в
код после всех константного свертывания, удаления мертвого кода и
аналогичные проходы побежали. Поскольку DATE является константой времени компиляции,
GCC может оценить оператор if
во время компиляции и удалить
позвонить.
По крайней мере, одним недостатком является то, что это зависит от оптимизации GCC
проходит, и поэтому он не будет работать на gcc -O0
Честно говоря, вам может быть лучше, просто добавив проверку во время выполнения
где-то и быстро терпит неудачу.