Я создал эту структуру данных:Странная проблема отладчика?
class Event
{
public:
Event(EVENT_TYPE type, void* pSender = 0, int content1 = 0,
int content2 = 0, int content3 = 0, int content4 = 0);
~Event(void);
// ... some functions
protected:
EVENT_TYPE itsType;
void* itsPointerToSender;
int itsContent_1;
int itsContent_2;
int itsContent_3;
int itsContent_4;
int numStacked;
};
конструктор которого является просто
Event::Event(EVENT_TYPE type, void* pSender, int content1, int content2, int content3, int content4)
: itsType(type),
itsPointerToSender(pSender),
itsContent_1(content1),
itsContent_2(content2),
itsContent_3(content3),
itsContent_4(content4),
numStacked(0)
{
}
По какой-то странной причине я не могу понять, отладчик VS не может и не показать мне все, что содержится в itsContent_4
, Если я поставлю часы на переменную, itsContent_4
дает мне symbol "itsContent_4" not found
, делая то же самое с itsContent_3
. Я не уверен, что переменная даже существует в отношении компилятора!
Я что-то упустил?
Редактировать: Теперь кажется (даже страннее), что изменение порядка переменных в объявлении создает еще больший беспорядок! Я попытался поставить itsContent_4
до itsContent_1
и теперь itsContent_1
инициализируется значением, предназначенным для itsContent_4
! Что здесь происходит? Я подозреваю, что что-то связано с наименованием, поэтому я попробую переименовать их все и посмотреть, что произойдет.
Edit 2: Да, по-видимому, изменение имен переменных itsContent_a
вместо itsContent_1
и так далее работает отлично. Есть ли ограничение на использование чисел в имени переменной?
Возможно, он оптимизирован. Попробуйте либо сделать его изменчивым, либо убедиться, что присвоение имеет некоторый побочный эффект (переменная используется позже в коде). –
Определенно используется позже. И я все равно пытаюсь это сделать без оптимизации. –
Нет ограничений на использование C++ для использования цифр в имени переменной (за исключением того, что они не могут запускать имя); все, что вы написали, выглядит отлично для меня C++. Вы можете сделать листинг с расширением препроцессора и проверить эти имена, если что-то странное происходит с макросами. Кроме этого, я в недоумении. –