В вашей конструкции вы можете использовать блок else, чтобы пропустить проверку для определенного:
#if SOME_SYMBOL == 1
// Here is my conditionally compiled code
#else
// error
#endif
Но в принципе комментарии верны. #if !defined
и сокращение #ifndef
являются двумя доступными версиями.
В настоящее время вы проверяете, равно ли SOME_SYMBOL
1. Вы выполняете другой код на основе этого значения?
Если нет, вы можете просто использовать:
#ifdef SOME_SYMBOL
// Here is my conditionally compiled code
#else
// error
#endif
А теперь это короткий шаг к типичному c ++ , включающему охрану . Копирование с этой ссылки в Википедии, вот файл grandparent.h
:
#ifndef GRANDPARENT_H
#define GRANDPARENT_H
struct foo {
int member;
};
#endif /* GRANDPARENT_H */
Теперь, даже если вы включите этот заголовок дважды, он будет выполнен только один раз.