Знаком с С только поверхностно. Подскажите плз, возможно ли написание на С кода, работающего (после перекомпиляции) под win32 и под mac(os x)? Или что по этому поводу стоит прочитать? На уровне бинарном я так понимаю совместимости быть не может.
Спасибо.
Re: С/С++ многоплатформенность на уровне исходников
Здравствуйте, manenkov, Вы писали:
M>Знаком с С только поверхностно. Подскажите плз, возможно ли написание на С кода, работающего (после перекомпиляции) под win32 и под mac(os x)? Или что по этому поводу стоит прочитать? На уровне бинарном я так понимаю совместимости быть не может.
Здравствуйте, manenkov, Вы писали:
M>День добрый!
M>Знаком с С только поверхностно. Подскажите плз, возможно ли написание на С кода, работающего (после перекомпиляции) под win32 и под mac(os x)? Или что по этому поводу стоит прочитать? На уровне бинарном я так понимаю совместимости быть не может.
Возможно. Читайте про кросплатформенный код. С помощью #ifdef'ов всё обычно решается.
Re: С/С++ многоплатформенность на уровне исходников
Здравствуйте, manenkov, Вы писали:
M>День добрый!
M>Знаком с С только поверхностно. Подскажите плз, возможно ли написание на С кода, работающего (после перекомпиляции) под win32 и под mac(os x)? Или что по этому поводу стоит прочитать? На уровне бинарном я так понимаю совместимости быть не может.
M>Спасибо.
Почитай код любого кросс-платформенного проекта, ту часть, где разруливается зависимость от оси.
Там, скорее всего, много макросов будет.
Можешь посмотреть, как это сделано в бусте, например — они там еще и разные компиляторы обхаживают, не только разные оси.
файл boost/config.hpp
Здравствуйте, php-coder, Вы писали:
M>>Знаком с С только поверхностно. Подскажите плз, возможно ли написание на С кода, работающего (после перекомпиляции) под win32 и под mac(os x)? Или что по этому поводу стоит прочитать? На уровне бинарном я так понимаю совместимости быть не может.
PC>Возможно. Читайте про кросплатформенный код. С помощью #ifdef'ов всё обычно решается.
Ну совсем без #ifdef не обойтись, конечно, но их использование можно свести к минимуму:
в .hpp описывается обобщеный интерфейс, общий для всех платформ, и далее в зависимости от того, где идет компиляция подключаются разные .cpp
Re: С/С++ многоплатформенность на уровне исходников
Здравствуйте, manenkov, Вы писали:
M>Знаком с С только поверхностно. Подскажите плз, возможно ли написание на С кода, работающего (после перекомпиляции) под win32 и под mac(os x)? Или что по этому поводу стоит прочитать? На уровне бинарном я так понимаю совместимости быть не может.
Это очень зависит от специфики задачи. Если задача в основном состоит из GUI, то это невозможно в принципе. Существуют всякие тулкиты, библиотеки и среды разработки, которые в каком-то приближении решают задачу разработки переносимого графического полтзовательского интерфейса. Но беда состоит в том, что "родное" виндовое приложение, "родное" приложение под висту и "родное" под мэкось выглядят и работают очень по-разному.
Если ты напишешь переносимый GUI на Qt, то он будет не первым, не вторым, не третьим, а будет специфическим Qt'ёвым интерфейсом. Если GUI в твоей программе вообще совсем совсем не главное, тоэто ещё как-то куда-то сойдёт, но если GUI всё-таки важная часть разработки, то запросто.
Что касается алгоритмов, то можно их писать очень даже переносимо, правда это потребует использования или создания переносимого фреймворка, для таких вещей, как работа с памятью или сфайлами...
ИТОГО
Если мы пишем программу, где есть развитое GUI + у этого GUI есть развитая внутреннья логика + есть ещё какой-то engine, который с GUI никак не завязан, то нам потребуется структурировать наш код, так, чтобы внутреннья логика GUI была написанна кроссплатформенно, сам GUI (контролы, реакция на клаву-мышку, отображение на экран/принтенр и т. п.) были реализованы для каждой платформы родным для неё способом + фреймворк для инкапсуляции сервисов OS, таких как память, время, нити, файлы и т. д. + переносимый engine.
Как-то так...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: С/С++ многоплатформенность на уровне исходников
Здравствуйте, Erop, Вы писали:
E>Если ты напишешь переносимый GUI на Qt, то он будет не первым, не вторым, не третьим, а будет специфическим Qt'ёвым интерфейсом.
AFAIR wxWidgets использует как раз native GUI на каждой поддерживаемой ей платформе.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>AFAIR wxWidgets использует как раз native GUI на каждой поддерживаемой ей платформе.
Все используют native GUI. Проблема не в том, что кто-то какой-то не такой API использует, а в том, что оболочки надо по-разному писать.
Напрмер, сообщения об ошибках нужно по разному формулировать. В OS Windows, например, нудно писать такие сообщения, чтобы уложиться в MessageBox. То есть там предполагается набор ответов, например Yes, No, Cancel
А в MAC OS X принято писать алертбоксы с кнопками, на которых написано что делать дальше.
Ну типа в винде пишут такое типичное сообщение: "Документ ХХХ не сохранён, а вы хотите выйти из программы. Сохранить документ?" и кнопки YNC, а в MAC OS X пишут как-то так: "Документ ХХХ не сохранён, а вы хотите выйти из программы" и кнопки: "сохранить документ", "не сохранять документ", "не выходить из программы"
И как ты это хочешь реализовывать сразу на обе платфоормы?
И таких отличий море. Ну реально философия взаимодействия с пользователем под разными OS разная просто.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Не, не все. Некоторые сами контролы/виджеты рисуют.
> Проблема не в том, что кто-то какой-то не > такой API использует, а в том, что оболочки надо по-разному писать. > Напрмер, сообщения об ошибках нужно по разному формулировать. В OS > Windows, например, нудно писать такие сообщения, чтобы уложиться в > MessageBox. То есть там предполагается набор ответов, например Yes, No, > Cancel > А в MAC OS X принято писать алертбоксы с кнопками, на которых написано > что делать дальше. > > Ну типа в винде пишут такое типичное сообщение: "Документ ХХХ не > сохранён, а вы хотите выйти из программы. Сохранить документ?" и кнопки > YNC, а в MAC OS X пишут как-то так: "Документ ХХХ не сохранён, а вы > хотите выйти из программы" и кнопки: "сохранить документ", "не сохранять > документ", "не выходить из программы" > > И как ты это хочешь реализовывать сразу на обе платфоормы?
Плохой пример. YNC пишут исключительно от лени, а не потому что так в
винде принято. Если какая программа будет показывать кнопки "сохранить
документ", "не сохранять документ", "не выходить из программы" — ни один
виндовый юзер на нее не обидится.
> И таких отличий море. Ну реально философия взаимодействия с > пользователем под разными OS разная просто.
Ну не знаю как там под макосью, а вин/лин ГУИ вполне реален.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sergey, Вы писали:
S>Плохой пример. YNC пишут исключительно от лени, а не потому что так в S>винде принято. Если какая программа будет показывать кнопки "сохранить S>документ", "не сохранять документ", "не выходить из программы" — ни один S> виндовый юзер на нее не обидится.
Ну не пишут так под винду. Можно обсуждать хорошо это или плохо, но это не принято. Такие диалоги с именованными кнопками в винде нестандарт. Особенно если они систем модал, например
И вовсе не от лени, кстати. А для того, чтобы оставаться привычными пользователю. Например в офисе давно уже нет никаких меседжбоксов, всё ручками написанно. При этом всё в версиях до висты косит под меседжбоксы, а вовсе не под мэковский подход...
Конечно ты можешь наплевать на "нативность" интерфейса на какой-то, или даже на всех платформах, но таки в прогах, с важным GUI так обычно не делают...
S>Ну не знаю как там под макосью, а вин/лин ГУИ вполне реален.
1) Ну мэкось тут тема
2) С лином тоже всё плохо. Для начала можешь подумать о третьих кнопках и клипбордах... Конечно простые случаи ты можешь заткнуть во фреймворке. Но вот сокраментальный вопрос виндового приложения "Вы положили в буфер обмена слишком большой объём данных. Хотите ли вы, чтобы он сохранился после завершения приложения?" в лине задавать вроде бы негде Про мэковские замороки с многими буферами я, опять же, скромно молчу...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: С/С++ многоплатформенность на уровне исходников
Здравствуйте, SchweinDeBurg, Вы писали:
E>>Если ты напишешь переносимый GUI на Qt, то он будет не первым, не вторым, не третьим, а будет специфическим Qt'ёвым интерфейсом.
SDB>AFAIR wxWidgets использует как раз native GUI на каждой поддерживаемой ей платформе.
Они стараются использовать родные контролы, но вот реализовать нативную логику работы обобщенно невозможно.
Здравствуйте, Sergey, Вы писали:
>> И таких отличий море. Ну реально философия взаимодействия с >> пользователем под разными OS разная просто.
S>Ну не знаю как там под макосью, а вин/лин ГУИ вполне реален.
Да и Win\Linux\Mac реален. Просто он всегда будет чем-то отличаться от нативных приложений. Причем, что самое вредное, зачастую непонятно чем именно. Просто некомфортно и все.
Erop пишет:
> S>Плохой пример. YNC пишут исключительно от лени, а не потому что так в > S>винде принято. Если какая программа будет показывать кнопки "сохранить > S>документ", "не сохранять документ", "не выходить из программы" — ни один > S> виндовый юзер на нее не обидится. > > Ну не пишут так под винду. Можно обсуждать хорошо это или плохо, но это > не принято. Такие диалоги с именованными кнопками в винде нестандарт.
Просто запусти в студии какой-нибудь долгоиграющий макрос, и пока он
работает, ткни мышкой в код. Увидишь, что диалоги с именованными
кнопками в винде тоже бывают, причем в продуктах MS.
> Особенно если они систем модал, например
Последний раз систем модал мессадж бокс я видел лет 10 назад. Они что,
до сих пор существуют?
> И вовсе не от лени, кстати. А для того, чтобы оставаться привычными > пользователю.
Важно еще оставаться понятными. Чему YNC не способствует.
> Например в офисе давно уже нет никаких меседжбоксов, всё > ручками написанно. При этом всё в версиях до висты косит под > меседжбоксы, а вовсе не под мэковский подход...
Че, там правда все так плохо? Я просто пару лет назад перешел на OO, а
до того использовал 97.
> Конечно ты можешь наплевать на "нативность" интерфейса на какой-то, или > даже на всех платформах, но таки в прогах, с важным GUI так обычно не > делают...
GIMP — прога с важным ГУИ? А Опера? SeaMonkey?
> S>Ну не знаю как там под макосью, а вин/лин ГУИ вполне реален. > 1) Ну мэкось тут тема
Увы, я тут не в теме.
> 2) С лином тоже всё плохо. Для начала можешь подумать о третьих кнопках > и клипбордах...
Многие люди вообще не замечают разницу между линуксом и виндой
> Конечно простые случаи ты можешь заткнуть во фреймворке. > Но вот сокраментальный вопрос виндового приложения "Вы положили в буфер > обмена слишком большой объём данных. Хотите ли вы, чтобы он сохранился > после завершения приложения?" в лине задавать вроде бы негде
Я его и винде не задаю Дебильный, на мой взгляд вопрос.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sergey, Вы писали:
S>Важно еще оставаться понятными. Чему YNC не способствует.
Просто найми нормального интерфейс дизайнера...
S>GIMP — прога с важным ГУИ? А Опера? SeaMonkey?
Что такое третье я не знаю, как на винде выглядит GIMP тоже не в курсе, но, IMHO, он и не на винде качеством интерфейса не блещет, а Опера имеет виесьма нестандартный виндовый GUI...
>> 2) С лином тоже всё плохо. Для начала можешь подумать о третьих кнопках >> и клипбордах... S>Многие люди вообще не замечают разницу между линуксом и виндой
Они кнопочки на мышке считать не умеют что ли?
S>Я его и винде не задаю Дебильный, на мой взгляд вопрос.
Это всего лишь вопрос высоты планки, которую ты задаёшь для качества GUI твоих приложений. Я не знаю, что это за приложения, но и у MS, которая формировала и отчасти всё ещё формирует критерии качественного GUI под Windows и у Apple Computers, которая формировала и формирует критерии качетсвенного GUI для Мэк ОС, эта планка расположена выше. Увы и ах...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Это всего лишь вопрос высоты планки, которую ты задаёшь для качества GUI твоих приложений. Я не знаю, что это за приложения, но и у MS, которая формировала и отчасти всё ещё формирует критерии качественного GUI под Windows и у Apple Computers, которая формировала и формирует критерии качетсвенного GUI для Мэк ОС, эта планка расположена выше.
Windows нифига "качественный GUI" не формирует, так как в приложениях самой MS он различается не меньше, чем GIMP и Photoshop. Сравни, например, MS Office, IE и Windows Media Player.
Sapienti sat!
Re[2]: С/С++ многоплатформенность на уровне исходников
В целом, я, конечно, с Вами согласен. Под любую платформу теоретически есть есть свои design guidelines, соблюдение которых является плюсом. Но на практике-то что мы видим? Существует много успешных приложений, которые, грубо говоря, кладут на это дело болт. Возьмите любое приложение с нестандартным интерфейсом: тот же Nero (окошко StartSmart, или как его), всякие плееры с фантастическими скинами и еще кучу всего. Да даже это не обязательно. В рамках любой платформы всегда существует целый зоопарк "почти нативного" софта с различными подходами к GUI: где-то MDI отдельными окошками, где-то вкладками, где-то стандартная панель инструментов (а они, кстати и по рамерам разные бывают), где-то новомодный ribbon, где-то еще чего-нить. А MS вообще в продуктах своих от версии к версии интерфейс хоть слегка, но визуально меняет. И ничего, пользуются люди, даже радуются иной раз, какой, мол интерфейс красивый. О какой нативности в таком зоопарке идет речь? Тут уж хоть qt, хоть swing (главное look&feel удачный подобрать, мне вот в оракловых продуктах нравится — голубенький такой) родным покажется. Вот Вы, наверное, работали в Eclipse или NetBeans — сильно неудобно было? Думаю не сильно. А они ни на всех платформах одинаковы. А взять тот же FF. Да, есть у них минорные различия между интерфейсом в версиях для разных ОС. Но в целом все одинаково. И три кнопки на диалоге подтверждения выхода в FF3: "Quit", "Save and quit" и "Cancel" — есть и в виндовой версии — что по Вашим словам дикое нарушение виндовых design guidelines. И ничего, пользует народ, не жалуется. ИМХО, стандартизованный интерфейс был бы необходим, если б можно было бы осваивать программы по аналогии: типа умеешь пользоваться одной — умеешь пользоваться и всеми. Но, ИМХО, в случае "профессионального", рабочего софта важнее функциональность интерфейса (все равно для производительной работы надо запоминать всякие сочетания клавиш и т.п.), а для простого — интуитивность интерфейса. Вот. Такое мое ИМХО.
Erop пишет:
> S>Важно еще оставаться понятными. Чему YNC не способствует. > Просто найми нормального интерфейс дизайнера...
Ну так что насчет студии? Вернее, комовского диалога ожидания? Или вот
IE сейчас спросил: "Хотите закрыть все эти вкладки?" И две кнопки —
"Закрыть вкладки" и "Отмена". Наверное, MS денег на нормального
дизайнера не хватило...
> S>GIMP — прога с важным ГУИ? А Опера? SeaMonkey? > Что такое третье я не знаю,
мозилла сьют, релоадед...
> как на винде выглядит GIMP тоже не в курсе, > но, IMHO, он и не на винде качеством интерфейса не блещет,
Ладно, возмем вместо гимпа фотошоп. У него очень стандартный виндовый
ГУИ, ага?
> а Опера имеет виесьма нестандартный виндовый GUI...
И что, Опере это таки сильно мешает?
Можно вспомнить еще адоб ридер — ему, наверное, нестандартность ГУИ тоже
не дает захватить весь мир...
>> > 2) С лином тоже всё плохо. Для начала можешь подумать о третьих кнопках >> > и клипбордах... > S>Многие люди вообще не замечают разницу между линуксом и виндой > Они кнопочки на мышке считать не умеют что ли?
У меня на мышке количество кнопок превышает все разумные пределы и
независит от того, какая ОС загружена. Или где ты их предлагаешь считать?
> S>Я его и винде не задаю Дебильный, на мой взгляд вопрос. > Это всего лишь вопрос высоты планки, которую ты задаёшь для качества GUI > твоих приложений. Я не знаю, что это за приложения, но и у MS, которая > формировала и отчасти всё ещё формирует критерии качественного GUI под > Windows и у Apple Computers, которая формировала и формирует критерии > качетсвенного GUI для Мэк ОС, эта планка расположена выше. Увы и ах...
Ну так у кого из них планка выше — у тех, кто вопрос задает или у тех,
кто не задает?
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Cyberax, Вы писали:
C>Windows нифига "качественный GUI" не формирует, так как в приложениях самой MS он различается не меньше, чем GIMP и Photoshop. Сравни, например, MS Office, IE и Windows Media Player.
Если речь идёт о версиях этих продуктов от одного года, то они вполне похожи. Просто при переходе к висте MS сменили вид ГУЯ...
При переходе от NT к чикаго, кстати, тоже сменили...
И Apple при переходе от классической системы к Ховой, тоже сменили...
Ты всё ещё думаешь, что не формируют?
Я конечно понимаю, что многим нравится Qt, но отрицать существования стандарта на нативное видовское, или мэковское приложене странно как-то.
Тем более что и тот и тот стиль описан производителями платформ в соответсвующих документах
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Sergey, Вы писали:
S>Ну так что насчет студии? Вернее, комовского диалога ожидания? Или вот S>IE сейчас спросил: "Хотите закрыть все эти вкладки?" И две кнопки — S>"Закрыть вкладки" и "Отмена". Наверное, MS денег на нормального S>дизайнера не хватило...
Наверное это IE7, сделанный уже под висту?
Под висту сделалиновые гайдлайнс, между прочим...
S>мозилла сьют, релоадед...
Ну я всё равыно не знаю как это выглядит и обсуждать интерфейс не могу
S>Ладно, возмем вместо гимпа фотошоп. У него очень стандартный виндовый S>ГУИ, ага?
У него очень стандартный МЭКЛВСКИЙ гуй, немного искажённый в сторону виндового MDI...
Но, возможно, ты в курсе, что шоп -- это МЭКОВСКОЕ приложение, которое перенесли под винду, немного переделав.
Тем не менее под виндой его интерфейс остался крайне уродским
S>И что, Опере это таки сильно мешает?
Я не знаю что именно мешает опере, но что-то таки мешает S>Можно вспомнить еще адоб ридер — ему, наверное, нестандартность ГУИ тоже S>не дает захватить весь мир...
А оно тоже не совсем виндовое приложение. Увы. Тоже мэковский порт. И тоже не особо удобно под виндой, кстати. Под мэк ос намного удобнее и органичнее
S>У меня на мышке количество кнопок превышает все разумные пределы и S>независит от того, какая ОС загружена. Или где ты их предлагаешь считать?
Ты прикалываешься?
S>Ну так у кого из них планка выше — у тех, кто вопрос задает или у тех, S>кто не задает?
У MS планка высокая довольно. У Яблочников ещё выше, IMHO. Какая планка у тебя я не в курсе. Когда создашь систему, или программу, которая превзойдёт по популярности хотя бы офис, или, хотя бы 5-й ворд -- поделишься опытом...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Если речь идёт о версиях этих продуктов от одного года, то они вполне похожи. Просто при переходе к висте MS сменили вид ГУЯ...
Давай смотреть. Вот Windows XP:
Вот Office 2003:
Вот Windows Media Player:
И есть ещё IE7 с его идиотским убирающимся меню. Итак, где тут consistent user interface?
E>Я конечно понимаю, что многим нравится Qt, но отрицать существования стандарта на нативное видовское, или мэковское приложене странно как-то. E>Тем более что и тот и тот стиль описан производителями платформ в соответсвующих документах
Нет, стандарты-то есть. Но сами MS (в особенности) и Apple (иногда) им не следуют. И в результате не следуют им и разработчики приложений, особенно в Windows.
В Линуксе и то больше единообразия из-за того, что GTK/QT предоставляют намного больше прикладных средств, чем WinAPI. Т.е. меньше остаётся простора для кастомизации.