У нас есть исходный код C++ с большим количеством определений, сделанных с использованием #define
и enum
. Недавно при анализе ошибки мы обнаружили, что было несколько определений, сделанных с использованием директивы препроцессора #define
, которые также были членами перечисления. Однако значения, присвоенные им, были разными.
Например,
#define ABC 100
typedef enum
{
ABC = 1,
DEF
} MY_ENUM;
ABC
определяется в двух местах.
Удивительно, но Visual Studio не выдала нам ошибку. Даже не предупреждение.
Мы обеспокоены тем, что могут быть другие определения, которые были определены таким же образом, и хотим их выяснить.
Повышение уровня предупреждений компилятора не дало нам никаких ошибок. Мы все еще можем собрать исходный код без ошибок, когда присутствуют такие переопределения. Количество предупреждений значительно увеличилось, и их слишком много, чтобы просматривать их одно за другим.
Кто-нибудь знает способ обнаружить эти множественные определения?
Мы используем Visual Studio 2010 Professional в качестве IDE.
#define
наconst int ABC = 100;
, и Visual Studio будет жаловаться. - person MSalters   schedule 10.11.2015