D>Сильно зависит от того, что за приложение Вы делаете, и для каких конкретно платформ. Например, если там сплошной навороченный GUI, и всё должно работать на ведущих сотовых телефонах, то о Вашей мечте — "единости" code base — лучше забыть. И ваять под каждую платформу отдельно, на самых эффективных "родных" framework'ах/платформах соответствующего толка.
Уже наваяли — есть и сложный нестандартный GUI (кроссплатформенный GUI engine) и единый codebase на C++ для всех платформ: Win XP, Win CE/Mobile, Symbian S60.
Планируется Linux, Android, iPhone, Blackberry OS, Web OS.
Под iPhone, конечно, придется, наверно писать UI на родном фреймворке, потому что пытаться переплюнуть интерфейс Айфона нет смысла.
Но если писать для каждой платформы полностью на ее родном фреймворке — где взять столько денег, чтобы нанять столько разработчиков? И как потом поддерживать такой огромный codebase с продублированной много раз функциональностью?
C++ уже меня изрядно достал, C# — замечательный язык, но мог бы я его использовать вместо C++ в своем проекте?