При работе с большой базой кода устаревшего кода я сегодня подозревал дублирующее определение, но зависимость не была очевидна для меня, поскольку она зависела от множества компиляций, расчеты времени.Проверяйте некоторые определения времени компиляции во время компиляции со старыми реализациями C++
enum { MAX_ITEMS = 4 }; // defined somewhere in my code universe
enum { ITEMS_MAX = COMPLICATED_CALCULATIONS }; // somewhere else
Я вспомнил некоторые случаи с аналогичными sizeof
вопросами, когда я пусть компилятор говорить.
Я обычно ставлю некоторые незапланированные формулировки, как это в коде (в IDE), то я нажмите [Alt] + [F9]:
void check() {
char bla[MAX_ITEMS == ITEMS_MAX]; // compiler-error shows difference
// ...but it causes a compiler warning about bla being never used
}
... и это только потому, что мой компилятор (Borland C++ 5.6.4) ленивым оценивает typedef
для массивов с небуквальной размерностью:
typedef char bla[0]; // immediate compiler error
typedef char bla[0 != 0]; // obvious, but no compiler error HERE
есть очень простой в записываетесь в память способ для проверки, как это? И, пожалуйста, не обвиняйте старого смелого компилятора ;-)
Вы хотите, чтобы статическое утверждение? –
@NeilKirk Да, похоже, я не знал этого термина, извините. – Wolf
Я бы предложил вам использовать бесплатный компилятор C++ 11 (недавний [Clang] (http://clang.llvm.org/) или недавний [GCC] (http://gcc.gnu.org/). ..) –