/ORDER (Mettre les fonctions dans l'ordre)
Spécifiez l’ordre de lien pour les fonctions COMDAT (empaquetées séparément).
Syntaxe
/ORDER :@filename
Paramètres
nom_fichier
Fichier texte qui spécifie l’ordre des liens pour les fonctions COMDAT.
Notes
L’option du compilateur /ORDER vous permet d’optimiser le comportement de pagination de votre programme en regroupant une fonction avec les fonctions qu’il appelle. Vous pouvez également regrouper les fonctions fréquemment appelées. Ces techniques, appelées optimisation de l’échange ou de pagination, augmentent la probabilité qu’une fonction appelée soit en mémoire lorsqu’elle est nécessaire et ne doit pas être paginée à partir du disque.
Lorsque vous compilez votre code source dans un fichier objet, vous pouvez indiquer au compilateur de placer chaque fonction dans sa propre section, appelée COMDAT, à l’aide de l’option de compilateur /Gy (Activer la liaison au niveau de la fonction). L’option /ORDER Linker indique à l’éditeur de liens de placer des COMDATs dans l’image exécutable dans l’ordre que vous spécifiez.
Pour spécifier l’ordre COMDAT, créez un fichier de réponse, un fichier texte qui répertorie chaque COMDAT par nom, un par ligne, dans l’ordre dans lequel vous souhaitez qu’ils soient placés par l’éditeur de liens. Transmettez le nom de ce fichier en tant que paramètre de nom de fichier de l’option /ORDER . Pour les fonctions C++, le nom d’un COMDAT est la forme décorée du nom de la fonction. Utilisez le nom non décodé pour les fonctions C, main
et pour les fonctions C++ déclarées en tant que extern "C"
. Les noms de fonction et les noms décorés respectent la casse. Pour plus d’informations sur les noms décorés, consultez Noms décorés.
Pour rechercher les noms décorés de vos COMDAT, utilisez l’option /SYMBOLS de l’outil DUMPBIN sur le fichier objet. L’éditeur de liens ajoute automatiquement un trait de soulignement (_) aux noms de fonction dans le fichier réponse, sauf si le nom commence par un point d’interrogation ( ?) ou à un signe (@). Par exemple, si un fichier source, example.cpp, contient des fonctions int cpp_func(int)
extern "C" int c_func(int)
et int main(void)
que la commande DUMPBIN /SYMBOLS example.obj
répertorie ces noms décorés :
...
088 00000000 SECT1A notype () External | ?cpp_func@@YAHH@Z (int __cdecl cpp_func(int))
089 00000000 SECT22 notype () External | _c_func
08A 00000000 SECT24 notype () External | _main
...
Dans ce cas, spécifiez les noms en tant que ?cpp_func@@YAHH@Z
, c_func
et main
dans votre fichier de réponse.
Si plusieurs options /ORDER apparaissent dans les options de l’éditeur de liens, la dernière option spécifiée prend effet.
L’option /ORDER désactive la liaison incrémentielle. Vous pouvez voir l’avertissement de l’éditeur de liens LNK4075 lorsque vous spécifiez cette option si la liaison incrémentielle est activée ou si vous avez spécifié l’option du compilateur /ZI (PDB incrémentielle). Pour désactiver cet avertissement, vous pouvez utiliser l’option /INCREMENTAL :NO linker pour désactiver la liaison incrémentielle et utiliser l’option du compilateur /Zi (Générer PDB) pour générer une base de données PDB sans liaison incrémentielle.
Remarque
LINK ne peut pas classer les fonctions statiques, car les noms de fonctions statiques ne sont pas des noms de symboles publics. Lorsque /ORDER est spécifié, l’avertissement de l’éditeur de liens LNK4037 est généré pour chaque symbole dans le fichier de réponse de l’ordre qui est statique ou introuvable.
Pour définir cette option de l'éditeur de liens dans l'environnement de développement Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Sélectionnez la page de propriétés d’optimisation de l’éditeur >de liens>de configuration.
Modifiez la propriété Function Order pour contenir le nom de votre fichier de réponse.
Pour définir cette option de l'éditeur de liens par programmation
- Consultez FunctionOrder.
Voir aussi
Informations de référence sur l’éditeur de liens MSVC
Options de l’éditeur de liens MSVC