De l'apprentissage et de la croix-plate-forme de développement (C++)
Je suis en train d'écrire un petit programme en C++ pour le plaisir et pour l'extension de mon C++ compétences. Depuis son champ d'application est relativement petite, j'ai également l'intention d'essayer de la croix-plate-forme de développement en faisant de ce programme de soutien à la fois Windows et Linux.
Je pense que mon C++ compétence est assis quelque part entre casual et niveau intermédiaire: OO, un peu de modèles et de modèles de conception, utilisé STL avant et essayer de regarder plus en détails, ... Cependant, tandis que le codage de ce petit programme, je trouve que plus je creuse en C++, le plus de douleur que je ressens, surtout quand je viens de comprendre et de gérer les différences entre les différentes plate-forme/vendor mise en œuvre.
L'utilisation de la croix-plate-forme des cadres comme Qt, ACE, Boost semble contribuer à accélérer le développement d'un lot de rendre ainsi la vie plus facile, mais j'ai peur si cela va battre mon but. Quelqu'un peut-il donner quelques conseils s'il ya une "meilleure pratique" pour faire du C++ multi-plateforme de développement? Merci.
Vous devez vous connecter pour publier un commentaire.
Il y a trois choses:
Écrire votre propre code de sorte qu'il est portable
Enveloppement spécifique à la plateforme Api derrière une abstraction/isolation/de l'utilité de la couche de
Choisir croix-plate-forme de bibliothèques
Vous pouvez choisir l'option n ° 2 et/ou 3.
Avantages de la n ° 3 cours n ° 2 ont tendance à être des choses comme, "C'est déjà écrit, de débogage, et de prise en charge"; et les inconvénients sont comme, "je dois apprendre ça, je pourrais avoir à payer pour cela, je ne peux pas nécessairement en charge moi-même, et il ne peut pas faire exactement ce que je veux."
Les développeurs préfèrent souvent l'option n ° 3 à la place de #2, surtout si c'est gratuit (open source qui tous trois des bibliothèques que vous avez cité sont).
http://blog.backblaze.com/2008/12/15/10-rules-for-how-to-write-cross-platform-code/
Devrait fournir plus de détails pour les réponses déjà données.
Aussi je vous suggère d'utiliser les bibliothèques existantes qui font abstraction de l'endianness, le type de données de tailles et de différences. Les éléments suivants doivent être considérés avant de commencer votre projet multi-plateforme.
GUI
Général des Bibliothèques/cadres
Développement D'Un Jeu
Utiliser gcc. Il est disponible sur Windows et Linux et les bibliothèques et de la syntaxe du langage est identique sur les deux plates-formes.
Pour la croix-plate-forme d'applications graphiques, Qt est une bonne idée. Il n'y a pas à sortir de sa dépendance sur un GUI cadre, si vous essayez d'atteindre indépendance de plate-forme.
Sauf si vous faites de GUI choses de la croix-plate-forme n'est pas un gros problème.
Il y a quelques petits problèmes à faire avec des systèmes de fichiers ( différent /\ séparateurs, des caractères autorisés dans les noms de fichiers, etc), mais ces derniers sont au niveau de l'application plutôt que le c++.
Faire principales applications devient de plus en plus complexe, vous avez besoin de gérer l'aide, les emplacements de fichiers éventuellement de sécurité et des informations utilisateur dans une plate-forme de façon. Pour la simple type d'algorithme de programmation il n'y a pas un problème.
Qt est principalement une bibliothèque d'interface graphique, même si elle a supplémentaires de la croix-plate-forme pour les systèmes de fichiers des trucs. STL, Boost, ACE sont de la croix-plate-forme, mais qui n'est pas là le point principal.
Les utiliser! Sérieusement. La seule raison pour laquelle vous pouvez pas voulez les utiliser, si vous prévoyez de travailler dans un environnement où ils ne sont pas disponibles. Mais, compte tenu de leur de la croix-plate-forme de la nature, qui n'est pas probable.
Vous trouverez que les avantages que vous obtenez de l'aide est immense, même si elles n'étaient pas de la croix-plate-forme. Les "bonnes pratiques" dont vous parlez est d'être en mesure de livrer votre "produit" aussi rapidement et facilement que possible.
Une fois, j'ai répondu à une question de quelqu'un qui a déclaré qu'il ne voulait pas utiliser les bibliothèques GUI, à un niveau au-dessus de la Xlib. Si il n'avais jamais utilisé de la Xlib, il faudrait savoir la douleur que nous avions tous ressenti quand ils sont forcés de code à un si bas niveau d'abstraction. Cela fait à peu près autant de sens que de vouloir de de code en assembleur parce que le C/C++?Python/Perl/everthting-le reste est tout simplement un niveau supérieur abstarction.
cette réponses sont vraiment bon et vous pouvez faire une liste pour trouver où est le début. mais je pense que vous devriez lire quelques articles à propos de "portage de l'application".pas pertinents avec la croix-plate-forme de développement, mais cela peut vous donner de très grande point de vue à propos de la croix-plate-forme de développement. Dans la croix-plate-forme de développement, l'un des plus de l'importation de chose, c'est des problèmes de mémoire comme "endian" (octet de commande d'ordre d'octet peut montrer des différences pour les tehnologies ou plates-formes)
utiliser boost. ils prennent soin de croix-plateforme de choses pour vous.
boost::filesystem est un excellent exemple
je pense que vous pouvez apprendre beaucoup de l'aide de l'ECA ou l'équivalent bibliothèques. elles serviront à augmenter votre compréhension de c++ et de modèles de conception. je pense que c'est la meilleure chose que vous pouvez faire pour améliorer vos compétences de codage.
Si vous êtes vraiment intéressé à faire de votre code de croix-plate-forme que possible, d'utiliser autant de compilateurs que possible. Si vous utilisez Windows et Linux, l'utilisation de VC et de gcc, au minimum. Cela permettra d'assurer que vous n'utilisez pas de complier des fonctions particulières, et que vous n'avez pas compter sur le système spécifique de comportement. Utiliser plus de compilateurs (Intel, IBM, etc) et les systèmes d'exploitation (OS X, Solaris) si vous avez accès à eux.
Vous pouvez essayer d'utiliser U++ > http://www.ultimatepp.org/index.html