Le préprocesseur peut-il détecter si le code de l'unité de traduction utilise (ou crée) des en-têtes précompilés? Le vrai problème auquel je suis confronté en ce moment est que je suis sur un projet qui est abusant de PCH en précompilant pratiquement tous les fichiers d'en-tête.
Cela signifie qu'il n'y a pas de la gestion des dépendances claires que vous pouvez obtenir de #includes et les temps de compilation sont terribles. Pratiquement chaque changement déclenchera une reconstruction complète.
L'application est bien trop grosse pour la réparer en une seule fois, et certains anciens refusent de croire que la précompilation est mauvaise en aucune façon. Je vais devoir le prouver en premier.
Je dois donc le faire étape par étape et m'assurer que mes modifications n'affectent pas le code qui est compilé à l'ancienne façon PCH.
Mon plan est de faire ifdef out le PCH.h et de travailler sur la version non PCH chaque fois que j'ai du temps à perdre.Détection d'en-têtes précompilés
#ifdef USES_PCH
#include "PCH.h"
#elif
// include only whats needed
#endif
Je souhaite éviter de définir USES_PCH à la ligne de commande et de maintenir manuellement en synchronisation avec /Y qui, en plus de ne pas être très élégante, serait une douleur. Il y a beaucoup de configurations et de modules à jongler avec et beaucoup de fichiers qui ne respectent pas les valeurs par défaut du projet.
Certes, le préprocesseur sait déjà si elle est censé être générer ou en utilisant les en-têtes précompilés. Il n'a pas besoin de * détecter * rien. Avez-vous plutôt voulu demander si le * code en cours de traitement * pouvait le détecter, comme avec une commande 'ifdef'? –
Oui, je veux faire un #ifdef __USES_PCH ou quelque chose de similaire – grimner
Quel est le problème réel que vous voulez résoudre avec cela? – peterchen