http://msdn.microsoft.com/en-us/library/tf4dy80a.aspx
"В Visual C ++ 4.2 стандартные заголовочные файлы C ++ содержали typedef, который приравнивал bool к int. В Visual C ++ 5.0 и более поздних версиях bool реализован как встроенный тип с размером 1 байт. Это означает, что что для Visual C ++ 4.2 вызов sizeof (bool) возвращает 4, в то время как в Visual C ++ 5.0 и более поздних тот же вызов приводит к 1. Это может вызвать проблемы с повреждением памяти, если вы определили элементы структуры типа bool в Visual C ++ 4.2 и смешивает объектные файлы (OBJ) и / или DLL, созданные с помощью компиляторов 4.2 и 5.0 или более поздних версий. "