Question

Je viens de créer un projet de bibliothèque « C ++ standard dynamique » en utilisant Xcode et compilé avec LLVM 2.0. Je remarque que le fichier PCH contient la #include <iostream> ligne mais le fichier Test.cp comprend également cette déclaration de #include <iostream>.

La chose étrange est que, en supprimant la déclaration dans Test.cp , la construction échoue avec le Semantic Issue – Use of undeclared identifier 'std' d'erreur en dépit du fait que cette déclaration est également inclus dans le PCH.

Pourquoi ne pas le travail de PCH? Y at-il un arrangement que je suis absent? Je n'ai jamais rien fait avec eux avant (car ils toujours juste travail) donc je ne suis pas sûr de ce qui perd de son travail, même avec un projet flambant neuf.

Était-ce utile?

La solution

En-têtes précompilés sont utilisés pour accélérer la compilation. Ils n'ont pas d'autre effet, en particulier, vous devez toujours inclure les en-têtes où vous en avez besoin.

Edition - Dans Xcode le fichier pch est vraiment un en-tête préfixe qui se trouve être précompilés (avec la configuration par défaut du projet). Vérifiez les paramètres de construction et GCC_PRECOMPILE_PREFIX_HEADER GCC_PREFIX_HEADER.

Autres conseils

Supprimer les données dérivées (fenêtre-organisateur, onglet Projets, sélectionnez votre projet) pour Xcode reconstruire l'index pour PCH. De plus, si vous utilisez tests unitaires, il y a un PCH séparé pour la cible de UnitTests. Assurez-vous que cela inclut aussi les importations nécessaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top