инициализация статиков
От: Аноним  
Дата: 06.07.11 14:15
Оценка:
странная проблема, никак не могу разобраться

скачал сорцы 7z, отбилдил проект консоли под вин32, всё работает.
создал новую конфигурацию под WinCE

в ней начинаются чудеса

любые сложные статические переменные (что в классах, что просто в файлах) не инициализируются вообще
т.е. в одном файле может быть


static const wchar_t kAnyCharsChar = L'*';
здесь всё нормально

ниже строчка
const UString WildCardStatics::kWildCardCharSet = L"?*";
тут просто пусто, в конструктор класса никогда не попадаем

тут тоже пусто
static const wchar_t *kUniversalWildcard = L"*";



пробовал выносить в структуру типа
struct WildCardStatics
{
  static const UString kWildCardCharSet;
  static const UString kIllegalWildCardFileNameChars;
};

ноль эффекта


помогает только вот такой подход
struct WildCardStatics
{
  static const UString &kWildCardCharSet()
  {
    static const UString wccs(L"?*");
    return wccs;
  }  
};


но боюсь для такого количества кода не сдюжаю, да и хочется разобраться в причинах такого поведения
есть идеи? складывается впечатление, что что-то очевидно пропустил, но никак не могу разобраться
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.