Является ли смешивание сред выполнения жизнеспособным решением?

В моей компании мы недавно перешли с VC9 на VC10.

Мы перенесли наши проекты, но затем ответственный человек сказал нам, что нам придется некоторое время хранить некоторые базовые общие библиотеки DLL, скомпилированные с помощью VC9, на наших производственных машинах.

Эти библиотеки DLL используют пользовательские структуры, некоторые из которых содержат std :: vector , std :: map и так далее. Сейчас я обратил внимание на то, что размеры стандартных контейнеров изменились: одни стали больше, другие - меньше. В результате изменился и размер наших нестандартных конструкций.

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

Лично я считаю, что это «решение» ужасно, потому что, хотя размер имеет значение, также имеет значение расположение структур. Мне кажется неправильным увеличивать объем памяти, занимаемой всеми структурами, для решения организационных проблем.

Короче говоря, у меня такой вопрос: возможно ли вообще использовать одновременно две разные среды выполнения (используя описанный трюк или любой другой трюк) при использовании типов, отличных от C, в прототипах функций? Есть ли у вас хороший / плохой опыт в подобной ситуации?

5
задан Charles 16 January 2012 в 18:42
поделиться