dell td230 ac adapter List of translations
Original on www.cs.tut.fi/~jkorpela/ Використання препроцесора C як засіб розробки HTML

Використання препроцесора C як засобу розробки HTML

Веб Authoring FAQ містить відповідь на питання Як додати один файл в інший? , зазначивши, що C препроцесор можна використовувати у якості одної з можливих технік. Цей документ дає деякі подробиці про те, як робити деякі спільні завдання, такі як включення файлів і простих макросів легко, припускаючи лише те, що у вас є С компілятор у вашому розпорядженні.

Визначення мови програмування C вказує, на додаток до заяв мови, набір попередньої обробки директив. Наприклад:
#include "foo.c"
інструктує компілятор для вилучення вмісту файлу foo.c і веде себе так, як якщо б вміст був на місці директиви. Типовому компілятору C може бути доручено виконання таких директив тільки, без обробки отриманих даних в якості програми на С. Це означає, що можна використовувати компілятор C, як загального призначення, препроцесор для файлів, відмінних від програми з вихідним текстом, теж.

Необхідні параметри

Параметри (перемикачі), які ви повинні дати в такому випадку, залежать від компілятора С. Наступні інструкції застосовані до GNU C Compiler (GCC) . Для інших компіляторів, варіанти можуть бути схожі, але будь-ласка, перевірте їх за посібниками.

GCC варіанти при використанні препроцесора для не-C файлів
(не обовязково) вжитку
-E тільки попередня обробка
-x c інтерпретувати файли, файли з вихідним текстом (а не розглядати їх як об'єктні файли); ця опція задана, щоб зробити їх попередньої обробленим компілятором
-P не генерують #line директиви (яка, звичайно в HTML документах!)
-C не ігноруйте коментарі (так як HTML-документ може містити дані, які були б коментарів у C)

Коли ці варіанти використовуються, GCC пише попередню обробку даних (наприклад, з #include директиви замінені вміст файлів називають) на стандартний висновок. Таким чином, якщо у вас є документ demo.htm , як HTML документ, за винятком використання #include директиви, можна генерувати HTML-документ demo.html з його командою
gcc -E -x c -P -C demo.htm >demo.html

Чи вважаєте ви використання розширенням .htm для таких файлів оману? Ну, ви можете використовувати будь вподобане вам розширення, звичайно. Я використовую .htm , бо тоді Emacs редактор автоматично переходить у режим редагування HTML-документів при відкритті таких файлів.

Приклад:

Наступний простий документ містить дві #include директиви, які відносяться до start.html (містить, в даному випадку, просто DOCTYPE декларації) та tail.htm , які містять кілька простих "причеп" даних. Він також використовує __DATE__ макрос, який дає дату попередньої обробки у вигляді рядка. Зверніть увагу, що може ввести в оману, щоб використовувати його в заяві про останньому оновленні.

#include "start.html"
<title>Demo</title>
<p>This is just a demonstration.</p>
#include "tail.html"

Оброблені описаним вище способом, ми маємо такий HTML-документ:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

<title>Demo</title>
<p>This is just a demonstration.</p>
<hr title="Information about this document">
<p>Last update: "May 24 1999".</p>

<address>
<a href="../">Jukka Korpela</a>,
<a href="mailto:jkorpela@malibutelecom.com">jkorpela@malibutelecom.com</a>
</address>

Повідомлення про помилки, які ви можете отримати

Ви можете отримати повідомлення про помилку на кшталт такого з препроцесора:

foo.htm: 8: незавершений характер постійної

Причина в тому, що препроцесор обробляє свій внесок за певними правилами, визнаючи такі речі, як рядки в лапках. Наприклад, якщо ваш документ містить слово
- Не варто.
тоді препроцесор буде ставити апостроф в якості відправної одинарні лапки і шукати закриття одинарні лапки на тій же лінії, а коли він не знаходить, він видає повідомлення про помилку.

Бажано, щоб поглянути на лінії у таких повідомленнях. Вони можуть містити реальні друкарськи помилки, навіть незакриті значення атрибутів у HTML. Але в таких випадках, як згадано як приклад вище, ви можете просто ігнорувати повідомлення. Однак, якщо вони турбують вас, ви можете запобігти їм, представляючи "бездомні" апострофи і лапки, як числові посилання на символи , а саме &#39; для апостроф (') і &#34; (або &quot; ) для цитату знак ("). Це не може бути зроблено, проте, для лапок і апострофів, що використовується для поділу атрибутів значення. (З іншого боку, як правило, не рекомендується розділити значення атрибутів по всій лінії.)

Макрос

Ви можете також визначити і свої власні макроси. Найпростіший для використання визначення констант, таких як короткі імена для довгих слів і фраз. Приклад:
#define i18n internationalization
Ви можете використовувати i18n де завгодно в документі, і воно буде розширено препроцесором. Зазначимо, що це простий, з урахуванням регістру, точної відповідності текстової підстановки. Крім того, препроцесор вставляє пробіл після розширення, але в HTML це звичайно не має значення (крім як в PRE елементах).

Пам'ятайте, що в C, рядки завершують макровизначення. Використовуйте зворотну косу риску ( \ ) в кінці рядка, щоб написати макрос до двох чи більше рядків.

Макрос може мати аргументи теж. Приклад:

# Визначаємо ПТС (thetitle) <title> thetitle </ title> <h2> thetitle </ h2>

Ви можете помістити це визначення в ваш загальний start.html (або як ви назвали б його), а потім ви можете почати ваші документи в наступному стилі:

# Включити "start.html"
ПТС (Прості демо)

Деякі додаткові пробіли можуть бути вставлені препроцесором, але зазвичай вони не мають значення в HTML. Виклик макросу TITLE(Simple demo) буде розширюватися

<title> Прості демо </ title> <h2> Прості демо </ h2> 

Необхідно дотримуватися обережності при виклику макросу з'являється в лапки. Ви повинні написати директиву як

# Визначити Q (рядки) # рядок

для таких випадків. Використання, ймовірно, найкраще ілюструється прикладом, який я використовував при створенні сторінок для тестування ефекту деяких правил CSS . Мені потрібно було писати багато таких речей, як

<span style="font-size: xx-small ;font-family:sans-serif">

з різними специфікаторами розміру з'являються на місці xx-small . Так я визначив

# Визначити Q (рядки) # рядок
# Визначаємо STY (Сиз) <span style=Q(font-size: РОЗМІР ;font-family:sans-serif)>

і використовувати STY(xx-small) , STY(x-small) , і т.д. Насправді, це було дещо складніше макрос, але це, сподіваюся ілюструє техніку. У зв'язку з HTML синтаксис, лапки повинні бути там (в HTML-документ, згенерований препроцесором), але якщо я писав до них напряму, він не буде працювати, тому що препроцесор не розпізнає макрос виклики в лапках.


Написавши цей документ, я знайшов документ Використання препроцесора C для підтримки HTML коду від доктора Джорджа Ф. Корлісса. Це дає хороший огляд того, що ще ви могли б зробити з препроцесора С, у реальній ілюстрації.

І я знайшов його через Micodocs , зокрема, через хороший, описовий перелік Препроцесор HTML . Розглянемо поглянути перш ніж прийняти рішення яких препроцесора ви хотіли б використовувати. Це залежить від складності бажаної попередньої обробки; корисності препроцесора C для документів HTML, що є досить обмеженим. Зокрема, зверніть увагу, що GTML препроцесор дозволяє використовувати синтаксис, аналогічний тому, який ми обговорили, та простий у використанні, ви можете почати з простих функцій, а потім приступити до більш складних питань, якщо це необхідно.


Дата останнього оновлення: 2000-06-07

Юкка Корпела

Білоруський переклад Викаристанне препрацесара C у якасці прилади HTML аўтарская надаються FatCow .

dell td230 ac adapter