Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The latest version of this topic can be found at -ORDER (Put Functions in Order).
ORDER:@filename
## Parameters
*filename*
A text file specifying the linking order for COMDAT functions.
## Remarks
The /ORDER option tells LINK to optimize your program by placing certain COMDATs into the image in a predetermined order. LINK places the functions in the specified order within each section in the image.
Specify the order in *filename*, which is a text file (response file) that lists the COMDATs in the order you want to link them. Each line in *filename* contains the name of one COMDAT. An object contains COMDATs if it has been compiled with the /Gy option. Function names are case sensitive.
LINK uses decorated forms of identifiers. The compiler decorates an identifier when it creates the .obj file. Use the [DUMPBIN](../Topic/DUMPBIN%20Reference.md) tool to get the decorated form of an identifier when you need to specify it to the linker. For more information on decorated names, see [Decorated Names](../Topic/Decorated%20Names.md).
If more than one /ORDER specification is used, the last one specified takes effect.
Ordering allows you to optimize your program's paging behavior through swap tuning by grouping a function with the functions it calls. You can also group frequently called functions together. These techniques increase the probability that a called function is in memory when it is needed and will not have to be paged from disk.
The linker will prepend an underscore (_) to every decorated name in *filename* unless the name starts with a question mark (?) or at sign (@). For example, if an object file contains `extern "C" int func(int)` and `int main(void)`, DUMPBIN [/SYMBOLS](../Topic/-SYMBOLS.md) will list these decorated names:
009 00000000 SECT3 notype () External | _func
00A 00000008 SECT3 notype () External | _main
However, the name specified in the order file should be `func` and `main`.
The /ORDER option disables incremental linking.
> [!NOTE]
> LINK cannot order static functions because static function names are not public symbol names. When /ORDER is specified, linker warning LNK4037 is generated for each symbol, in the order file, that is either static or not found.
### To set this linker option in the Visual Studio development environment
1. Open the project's **Property Pages** dialog box. For details, see [Setting Visual C++ Project Properties](../Topic/Working%20with%20Project%20Properties.md).
2. Click the **Linker** folder.
3. Click the **Optimization** property page.
4. Modify the **Function Order** property.
### To set this linker option programmatically
- See [FunctionOrder](assetId:///P:Microsoft.VisualStudio.VCProjectEngine.VCLinkerTool.FunctionOrder?qualifyHint=False&autoUpgrade=True).
## See Also
[Setting Linker Options](../Topic/Setting%20Linker%20Options.md)
[Linker Options](../Topic/Linker%20Options.md)