/ORDER (vložení funkcí v pořadí)
Zadejte pořadí propojení pro samostatně zabalené funkce (COMDAT).
Syntaxe
/ORDER:@název_souboru
Parametry
filename
Textový soubor, který určuje pořadí propojení pro funkce COMDAT.
Poznámky
Možnost kompilátoru /ORDER umožňuje optimalizovat chování stránkování programu seskupením funkce spolu s funkcemi, které volá. Můžete také seskupovat často volané funkce dohromady. Tyto techniky označované jako optimalizace prohození nebo stránkování zvyšují pravděpodobnost, že volaná funkce je v paměti v případě potřeby a nemusí být stránkována z disku.
Při kompilaci zdrojového kódu do souboru objektu můžete kompilátoru sdělit, aby každou funkci umístil do vlastní části označovanou jako COMDAT, pomocí možnosti kompilátoru /Gy (povolit propojení na úrovni funkce). Možnost linkeru /ORDER říká linkeru, aby umístil comDATs do spustitelného obrázku v pořadí, ve kterém zadáte.
Chcete-li zadat pořadí COMDAT, vytvořte soubor odpovědi, textový soubor, který obsahuje každý COMDAT podle názvu, jeden řádek, v pořadí, v jakém je má linker umístit. Předejte název tohoto souboru jako parametr názvu souboru parametru /ORDER. U funkcí jazyka C++ je název COMDAT ozdobnou formou názvu funkce. Použijte nedekódovaný název pro funkce main
jazyka C a pro funkce jazyka C++ deklarované jako extern "C"
. V názvech funkcí a zdobených názvech se rozlišují malá a velká písmena. Další informace o zdobených názvech naleznete v tématu Dekorované názvy.
Pokud chcete najít zdobené názvy objektů COMDAT, použijte v souboru objektu možnost /SYMBOLS nástroje DUMPBIN. Linker automaticky předepsá podtržítko (_) na názvy funkcí v souboru odpovědi, pokud název nezačíná otazníkem (?) nebo znakem (@). Pokud například zdrojový soubor, example.cpp, obsahuje funkce int cpp_func(int)
extern "C" int c_func(int)
a int main(void)
příkaz DUMPBIN /SYMBOLS example.obj
uvádí tyto ozdobené názvy:
...
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
...
V tomto případě zadejte názvy jako ?cpp_func@@YAHH@Z
, c_func
a main
v souboru odpovědi.
Pokud se v možnostech linkeru zobrazí více než jedna možnost /ORDER , projeví se poslední zadaná možnost.
Možnost /ORDER zakáže přírůstkové propojení. Upozornění linkeru se může zobrazit LNK4075 při zadání této možnosti, pokud je povolené přírůstkové propojení, nebo pokud jste zadali možnost kompilátoru /ZI (přírůstkový soubor PDB ). Pokud chcete toto upozornění vypnout, můžete pomocí možnosti /INCREMENTAL:NO linker vypnout přírůstkové propojení a pomocí možnosti kompilátoru /Zi (generovat PDB) vygenerovat PDB bez přírůstkového propojení.
Poznámka:
Funkce LINK nemůže uspořádat statické funkce, protože názvy statických funkcí nejsou veřejnými názvy symbolů. Pokud je zadán parametr /ORDER , vygeneruje se upozornění linkeru LNK4037 pro každý symbol v souboru odpovědi objednávky, který je statický nebo nenalezen.
Nastavení tohoto parametru linkeru ve vývojovém prostředí sady Visual Studio
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností optimalizace linkeru >konfigurace.>
Upravte vlastnost Order funkce tak, aby obsahovala název souboru odpovědi.
Programové nastavení tohoto parametru linkeru
- Viz třída FunctionOrder.