Робота з IDEToMak в CBuilder

Якщо ви раніше використовували (або як і раніше використовуєте) компілятор Borland C + + (остання версія 502), то ви, ймовірно, захочете взяти якісь існуючі проекти і завантажити їх в середу CBuilder Навіщо вам це потрібно Щоб зручніше працювати з вікнами (формами), а також конвертувати бібліотеки DLL в нові VCL, – ось уже дві причини, які першими приходять на розум

На жаль, компілятор Borland C + + тримає інформацію про проект в спеціальному файлі з розширенням IDE, і цей * IDE файл не сумісний з CBuilder Зрештою, не станете ж ви очікувати, що дві різні версії різних мовних оболонок будуть сумісні Ну, в світі Windows, напевно, не станете, але от у світі Borland – інша справа

Програма IDEToMak конвертує існуючий IDE-файл проекту з Borland C + + в еквівалентний файл проекту (MAK) у системі CBuilder Щоб запустити програму IDEToMak, перейдіть в каталог з IDE-файлом і введіть:

IDEToMak &ltIDEFile&gt

Наприклад, якщо у вас був проект в Borland C + +, який називався Test, то ви б набрали:

IDEToMak TestIDE

У результаті вийшов би файл TestMAK в каталозі Test У програми IDEToMak немає опцій це проста утиліта, яка здійснює пряме перетворення

Як більшість компіляторів C + +, Borland CBuilder поставляється з програмою препроцесора У CBuilder вона називається CPP32EXE Препроцесор відповідає за заміну всіх директив препроцесора в повний вихідний код програми перед тим, як викликається компілятор Препроцесор працює з такими виразами, як #include, #define, #ifdef і т д Уявіть, наприклад, що у вас був наступний початковий файл:

#ifdef WORKING int x = 1

#else

int x = 2

#endif

#define X_WORD 32 int main(void)

{

int z = X_WORD + 99

/ / Тут небудь робимо з z return 0

}

Це просте додаток використовує кілька директив препроцесора (#ifdef, #else, #endif,

#define) Якби ви пропустили додаток через препроцесор, набравши

C:\test&gtcpp32 testcpp

Borland C++ Preprocessor 52 for Win32 Copyright (c) 1993, 1997 Borland International TESTCPP:

то ви б побачили, що результат записаний у файл testi Ось як цей файл виглядає для даного вихідного файлу:

/* TESTCPP 1: */

/* TESTCPP 2: */

/* TESTCPP 3: */

/* TESTCPP 4: */int x = 2

/* TESTCPP 5: */

/* TESTCPP 6: */

/* TESTCPP 7: */

/* TESTCPP 8: */

/* TESTCPP 9: */int main(void)

/* TESTCPP 10: */{

/* TESTCPP 11: */int z = 32 + 99

/* TESTCPP 12: */

/* TESTCPP 13: */

/* TESTCPP 14: */

/* TESTCPP 15: */return 0

/* TESTCPP 16: */

/* TESTCPP 17: */}

/* TESTCPP 18: */

Як бачите, препроцесор робить дві речі По-перше, всі директиви препроцесора він конвертує в звичайний текст програми По-друге, він генерує файл зі списком номерів рядків, який показує вам походження кожного рядка у вихідному файлі Ймовірно, вам іноді потрібно буде дізнатися, що містить небудь дивний заголовний файл Уявіть, наприклад, що ми змінили нашу програму наступним чином:

#include &ltvector&gt

#ifdef WORKING int x = 1

#else

int x = 2

#endif

#define X_WORD 32 vector&ltint&gt intArray int main(void)

{

int z = X_WORD + 99

/ / Тут небудь робимо з z return 0

}

Знову ж, тут немає нічого особливого Ми просто додали модуль з бібліотеки стандартних шаблонів (STL), але ви, ймовірно, будете дуже здивовані, як і я, коли побачите, що розмір отриманого файлу testi перевищує 6 Mбайт Це, зокрема, показує, чому компіляція програми, що використовує STL, відбувається набагато довше, ніж компіляція програми, що не використовує цю бібліотеку Перегляд отриманого файлу може зайняти кілька днів Приємним моментом у всьому цьому є те, що препроцесор генерує такий файл всього секунд за 30, а компілятор обробляє його ненабагато довше (може бути, трохи менше хвилини), цілком компілюючи весь текст в повністю працюючу програму

Один з найважливіших випадків, коли використовується препроцесор, – зясування того, чому що-

то не працює, хоча, начебто, присутній в коді Якщо, приміром, у вас два визначення одного і того ж макросу (#define) Знаходяться десь серед численних заголовків файлів вашої програми, то ви зможете знайти їх за допомогою препроцесора Якщо ви видалите шматок коду командою препроцесора #ifdef, То точно так само зможете зрозуміти, що відбувається, подивившись на те, що вам видасть препроцесор

Так як розмір вихідного файлу препроцесора вельми великий, його варто використовувати тільки за сугубій необхідності Але в кожному разі приємно усвідомлювати, що така можливість є

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*