MS embedded VC 4.0 bug
От: bkat  
Дата: 08.05.03 15:51
Оценка:
Возможно малочисленному сообществу разработчиков для WinCE
будет интересно знать о следующей проблеме, с которой я только что столкнулся.

class CTestClass  
{
public:
  CTestClass()
  {
    wchar_t mess[100];
    swprintf(mess,_T("this == %p"),this);
    ::MessageBox(NULL,mess,_T("default constructor"),0);
  }

  CTestClass(const CTestClass& other)
  {
    wchar_t mess[100];
    swprintf(mess,_T("this == %p, &other == %p"),this,&other);
    ::MessageBox(NULL,mess,_T("copy constructor"),0);
  }

  virtual ~CTestClass()
  {
    wchar_t mess[100];
    swprintf(mess,_T("this == %p"),this);
    ::MessageBox(NULL,mess,_T("destructor"),0);
  }

};

void TestAction(CTestClass obj)
{
  wchar_t mess[100];
  swprintf(mess,_T("&obj == %p"),&obj);
  ::MessageBox(NULL,mess,_T("TestAction"),0);
}


Если вызвать функцию TestAction следующим образом,
TestAction(CTestClass());

то программа покажет 3 разных диалога:
— диалог от "default constructor"
— диалог от функции "TestAction"
— диалог от "destructor".

Так вот, адреса, которые будут показаны в 1-м случае и
в двух других случаях, будут разными .
Еще осталось добавить, что все это справедливо для eVC 4.0
с установленным сервис паком. Генерация кода проводилась для
процессора "ARMV4I". Компилятор для эмулятора этой проблемы не имеет.
Компиляторы для других процессоров проверить, к сожалению, не могу.




12.09.03 18:44: Перенесено модератором из 'C/C++' — AS
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.