Переносимость программы - PullRequest
       2

Переносимость программы

15 голосов
/ 19 августа 2010

Как сделать так, чтобы моя программа была полностью переносимой?

Ответы [ 12 ]

1 голос
/ 20 августа 2010

Знайте платформы, для которых вы собираетесь отправлять.Если какое-либо соглашение о платформе противоречит стандарту, игнорируйте стандарт.Я серьезно об этом.Например, если вы используете стандартный конструктор std::ifstream, который принимает аргумент char*, вы не сможете открыть файлы с именами файлов Unicode в Windows - вы должны использовать нестандартный wchar_t* перегрузка там.Функциональность, утраченная из-за невозможности открывать разрешенные и легальные на платформе файлы, значительно перевешивает переносимость, полученную благодаря использованию только того, что знает стандарт;в конце концов, важна функциональность, а не соблюдение определенного стандарта.

0 голосов
/ 29 августа 2010

Это менее прямой ответ на вопрос, чем ответ в свете других ответов.

Вам необходимо сбалансировать требование абсолютной переносимости с ожиданиями пользователей платформы - существуют разные базовые HCI/ HIG рекомендации для Windows, OS X, KDE и Gnome, и ни один из портативных наборов инструментов GUI не будет автоматически давать правильные результаты в каждом (некоторые позволяют вам применять разные макеты, что является началом).

Подход inbetween заключается в том, чтобы иметь чисто переносимое ядро ​​с несколькими собственными графическими интерфейсами.

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

...