ПредишенСледващото

За да контролирате компилиран предназначение директива компилатор #pragma hdrstop. Всички заглавни файлове са включени в настоящата директива, са поставени в едно изображение, например:

Това ще създаде последователност образ, съдържащ съставени vcl.h и низ. Това изображение ще се използва за други CPP-файл, ако иска да hdrstop директива ще включва едни и същи файлове в един и същи ред. Позволете ми да привлека вниманието ви към това, което е важно, е не само състава, но също и по реда на заглавната част - дори и ако на следващата CPP-файл включва същите заглавия, но първия сет: низ, а след това vcl.h, а след това за тази CPP-файл ще бъде генериран нов имидж.

По този начин, за повторна употреба предкомпилирана глава изисква две условия:
  • състав включва файлове, за да hdrstop директива трябва да бъде същият
  • файла с последователност, за да се даде възможност на hdrstop директива трябва да бъде същият
Намаляване на разходите по съставяне на стандартни заглавки до минимум може да се използва само ако се съберат на едно изображение, съдържащо всички стандартни заглавията, необходими за проекта. За да направите това, вие трябва да:
  • Всички проекти CPP-файлове имат едни и същи блок включванията към hdrstop на директива
  • това устройство трябва да включва всички стандартни заглавни файлове, необходими за проекта
Запознайте се с тези условия само достатъчни за тази цел в началото на всяка CPP-файл, който трябва да се облече в следните направления:

където pch.h - файл, съдържащ включването на всички стандартни заглавия:

Пълният текст на моята версия на този файл се показва в края. На з-файлове, включени в компилиран изображение се наслагва ограничение - те не трябва да се инициализира данни, например, има линии math.hpp:

Поради наличието на тези константи включва math.hpp в pch.h не можете да подадете.

Между другото, C ++ Builder чрез добавяне на нови модули изпълнява проекти описано стратегия за управление на PCH. Така например, при създаването на ново заявление, unit1.cpp файл изглежда така:

Ако се вгледате в текста vcl.h, можем да видим, че това е обвивка за включването на голям брой други стандартни заглавки.

Управление vcl.h състав, включени в заглавието чрез използване на специални знаци (INC_VCLDB_HEADERS, INC_VCLEXT_HEADERS и др.). В моята версия pch.h тези символи са определени с помощта на #define да се даде възможност vcl.h, което води до увеличаване на броя на включване на файлове.

Както и в съществуващия проект да започнат да използват прекомпилирани хедър

Дори и в по-голям проект, за да започнете да използвате прекомпилирани заглавията е съвсем проста.

В свойствата на проекта, за да се даде възможност за кеширане предкомпилирана заглавията и се препоръчва да се уточни "личен" файл, в който да се съхранява на изображението предкомпилирана заглавията: Проект - Настройки - раздел съставител, групата "предварително компилиран" заглавки. Там трябва да се избере "Кеш предварително компилиран" заглавки и в полето "Име на файла", въведете "pch.csm". С тази конфигурация, един образ с прекомпилирани заглавията ще се намира в папката на проекта, в pch.csm файл.

След това в началото на всяка CPP-модул, който искате да вмъкнете 2 линии:

Всички, предварително включени заглавните файлове остават на местата си, те не трябва да бъдат отстранени. Например:

Тъй като в се използват всички стандартни заглавията Guard активирате отново, а след това се повтаря препратки към тях не води до възстановяване на връзката.

По принцип, когато се използва pch.h, техническа необходимост да включва стандартни заглавията изчезват. Въпреки това, той все пак е полезно да се уточни всичко необходимо за всеки конкретни заглавия модул под директива #pragma hdrstop. На първо място, това е до известна степен документирано модул - за включване на файлове може да се съди, това, което е възможно полза този модул. От друга страна, то улеснява повторното използване на модули в други проекти, които са или не са използвани pch.h, или съдържанието му могат да бъдат различни.

Теоретично, можем допълнително да се повиши ефективността на съставяне, ако са включени в pch.h не само стандарт, но всички потребителски заглавки. На практика, тъй като по поръчка на заглавията се променят доста често, това може да доведе до чести прекомпилиране pch.h, което има отрицателно въздействие върху времето компилация. В допълнение, по поръчка заглавията като цяло не са много големи и събират бързо. Затова включват тях pch.h не е препоръчително.

Как да се провери, че прекомпилирани заглавията се използват ефективно

Когато добавяте нови файлове към проекта, не забравяйте да ги включите pch.h, защото иначе те са няма да се използва обща компилиран изображение. Същата ситуация може да възникне, ако стандартните заглавията са включени в някои модули, които не са били включени в pch.h. За да следите на тези файлове, има няколко начина:
  • визуално наблюдение на процеса на компилация. Обикновено броят на редовете се съставят в един файл не трябва да надвишава 10000-15000 редове
  • Ако проектът е избран за отделен файл за съхраняване на изображения предкомпилирана заглавията и файлът се нарича pch.csm, е необходимо да се отбележи наличието на помощни файлове с имената на PCH. # 00, PCH. # 01, и т.н. Ако всички файлове на проекта се използват една и съща компилиран изображението, спомагателното Файлът трябва да бъде само един - PCH # 00 .. Ако има повече файлове, това означава, че за някои CPP-модули са допълнителни изображения.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!