J'ai le problème suivant: Mon projet (C++ -) se compose de plusieurs sous-projets. Dans chacun, j'ai plusieurs fichiers avec le code que je veux exécuter au démarrage. Ma solution à ce jour est d'utiliser des variables statiques qui appellent le code correspondant à l'initialisation comme ceci:Comment empêcher l'éditeur de liens d'optimiser le code de démarrage?
// Foo.cpp
static TFooRegistry sFooRegistry; // does stuff in constructor.
Lors de la construction de mon projet à l'aide dll pour chaque sous-projet, tout fonctionne très bien et le code est exécuté comme prévu. Cependant, lors de la liaison statique des sous-projets, l'éditeur de liens détermine que Foo.o ne contient aucun code référencé de l'extérieur et l'optimise. Bien sûr, je pourrais ajouter une référence à sFooRegistry ailleurs, mais c'est fastidieux et sujet aux erreurs.
Quels sont les moyens (normatifs) de résoudre ce problème? OK, que puis-je faire sur mac/gcc et win/visual studio?
Doh! Cher Bjarne: Pourquoi? – Tobias
Quelle est la différence entre un éditeur de liens optimisant le code et ne le liant pas? Je pensais que c'était juste deux noms pour la même chose. – Tobias
C++ a été conçu pour fonctionner avec les lieurs existants (voir le livre D & E de Stroustrup) qui n'avait pas de concept de constructeur. –