Создание переносимого кода - PullRequest
       11

Создание переносимого кода

3 голосов
/ 14 сентября 2008

Несмотря на всю суету, связанную с проектами с открытым исходным кодом, все еще существует не слишком сильный стандарт, который позволяет вам создавать переносимый код (я имею в виду C/C++, а не Java или C#) Каждый готовит свой суп.

Есть даже некоторые сторонние библиотеки вроде Apache Portable Runtime.

Ответы [ 7 ]

5 голосов
/ 14 сентября 2008

Да, стандарта нет, но такие библиотеки, как Qt и boost могут значительно облегчить вашу жизнь, если вы будете заниматься кроссплатформенной разработкой.

3 голосов
/ 15 сентября 2008

wxwidgets - отличный уровень абстракции в родных графических интерфейсах большинства оконных менеджеров.

1 голос
/ 15 сентября 2008

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

Однако в C и C ++ нет библиотеки графического интерфейса, например Java или C #, однако существуют некоторые бесплатные или коммерческие библиотеки графического интерфейса, которые позволят вам создавать переносимые приложения с графическим интерфейсом.

Я думаю, что наиболее популярными являются Qt (коммерческие) и wxWidgets (FOSS). Согласно Википедии есть намного больше.

Существует также повышение, хотя и не библиотека графического интерфейса boost действительно отличное дополнение к STL в C ++. Фактически, некоторые из расширенных библиотек будут добавлены в следующем стандарте C ++.

1 голос
/ 15 сентября 2008

ADAPTIVE Communication Environment (ACE) - это превосходная объектно-ориентированная среда, которая обеспечивает кроссплатформенную поддержку для всех функций ОС низкого уровня, таких как многопоточность, сокеты, мьютексы и т. Д. количество компиляторов и операционных систем.

1 голос
/ 14 сентября 2008

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

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

1 голос
/ 14 сентября 2008

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

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

0 голосов
/ 15 сентября 2008

Если вы убедитесь, что он корректно компилируется как с GCC, так и с MS VC ++, вам не потребуется особых усилий для переноса в другое место.

...