Ou plus concrètement: Si je compile un fichier contenant uniquement du code Obj-C ou simplement du code C++ sous Objective-C++, puis-je être sûr qu'il se comportera exactement comme avant? De quelles façons pourraient-ils différer?Est-Objective-C++ un surensemble de C++ et Objective-C?
Répondre
Plus ou moins, c'est vrai; tout ce qui compile sous C++ ou Objective-C sera compilé avec le compilateur Objective-C++.
Cependant, il existe des arêtes où cela n'est pas vrai et une poignée de différences de comportement. Cependant, je ne connais pas de différences comportementales spécifiques au moment de l'exécution. Les différences devraient généralement apparaître au cours de la compilation et surtout comme des problèmes causés par la notion de types «améliorée» de C++.
La surcharge de l'opérateur peut être extrêmement problématique, cependant. Si un corps de code fait un usage intensif de la surcharge de l'opérateur, cela peut poser problème lors du premier mélange d'Objective-C. Mais, encore une fois, typiquement comme des avertissements de compilateur et rarement comme des bogues à l'exécution.
Objective-C est un sur-ensemble de C seulement. Vous pouvez mélanger C++ avec Objective-C - c'est ce qu'on appelle Objective-C++ - mais il y a certaines règles que vous devez suivre.
Ici vous pouvez voir toutes les règles qui doivent être suivies: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html
EDIT: Ceci est une citation du site du développeur: « compilateur Objective-C d'Apple vous permet de mélanger librement code C++ et Objective-C dans le Le même fichier source Objective-C++ est un hybride Objective-C/C++, qui vous permet d'utiliser les bibliothèques C++ existantes de vos applications Objective-C. Donc, il est clairement dit que le mélange de C++ et d'Objective-C s'appelle Objective-C++, mais ce n'est pas un sur-ensemble de C++, mais c'est deux langages qui, avec certaines règles, peuvent être utilisés ensemble. (Par exemple, vous ne pouvez pas mélanger les classes objectives-c et C++ pendant l'héritage, mais il y en a d'autres aussi.)
Je suppose qu'il existe au moins un exemple de code Objective-C valide qui n'est pas valide Objective-C++:
void SayHello()
{
char* this = "hello!";
printf("%s", this);
}
(ce que quelqu'un serait en train de faire nommer une variable « ceci », je ne sais pas)
Yup; vous pouvez arriver avec une poignée de petites arêtes vives comme celle-ci. Je crois que "id" peut faire des choses aussi, dans certaines circonstances. – bbum
- 1. C# est-il un surensemble de C?
- 2. Reliure ObjectiveC classe C# problème
- 3. alloca et ObjectiveC Garbage Collector
- 4. Trier un tableau dans ObjectiveC
- 5. NumberFormatter - ObjectiveC
- 6. ObjectiveC, un tableau créant des classes
- 7. ObjectiveC bloque l'équivalent Java
- 8. Shapefile avec ObjectiveC
- 9. ObjectiveC-PHP: Passer des problèmes de chaîne et de sécurité
- 10. Aider avec le code GCC et ObjectiveC et Cygwin
- 11. Overlay 1 Xml sur l'autre (surensemble)
- 12. NSString question ObjectiveC
- 13. Personnalisation de writeToFile dans ObjectiveC
- 14. Analyseur AMF0 dans ObjectiveC
- 15. Variable statique dans ObjectiveC
- 16. Calculer l'intersection dans ObjectiveC
- 17. Combine chaîne en ObjectiveC
- 18. Chiffres aléatoires ObjectiveC
- 19. Est-ce que les programmes écrits dans un surensemble strict d'une langue comptent comme un polyglotte?
- 20. Des solutions pour Twitter API1.1 et OAuth pour ObjectiveC?
- 21. Comment utiliser struct et union dans la classe objectiveC?
- 22. MVC utilisé dans la programmation ObjectiveC
- 23. Puis-je placer un sélecteur ObjectiveC @ dans un NSDictionary?
- 24. Allocation de mémoire dynamique 2D - ObjectiveC
- 25. Autorisation avec gdata-objectivec-client
- 26. Décryptage AES en utilisant ObjectiveC
- 27. envoyer une notification de javascript dans UIWebView à ObjectiveC
- 28. Créer un cercle/une bulle de couleur par programmation dans ObjectiveC et Cocoa
- 29. La syntaxe Groovy est-elle un surensemble exact de la syntaxe Java?
- 30. Chargement d'une séquence d'images dans InterfaceBuilder -ObjectiveC
Voilà la réponse que j'espérais! –
(bien que voir ma réponse ci-dessous) –