2014-11-03 4 views
1

В соответствии со стандартом C11 (5.1.1.2 фаз переводов) имеется 8 фаз трансляции. Может ли кто-нибудь дать конкретный пример для каждой из фаз.C этапы перевода конкретных примеров

Например, на этапе 1 есть:

Физический источник фи ле многобайтовые символы отображаются, в реализации- де определен таким образом, к множеству источников символов ...

так может У меня есть пример того, что происходит, когда это сопоставление выполняется и т. Д. для других этапов?

+0

Большинство этих этапов достаточно понятны. Есть ли, в частности, какие-то проблемы? –

+0

Да, т. Е. 1 и 5. Можете ли вы дать мне некоторые конкретные примеры многобайтового отображения или преобразования перехода? – xdevel2000

ответ

1

Ну, пример одного из этапов будет хранить исходный код в формате, ориентированном на запись, например, в z/OS на мэйнфрейме.

Этих наборов данных имеет фиксированные записи размеров так, если ваш набор данных спецификация была FB80 (фиксированная, заблокированы, длиной записи 80), «линия»:

int main (void) 

будет сохранен как эти пятнадцати символов затем шестьдесят пять пробелов и no Новая линия.

Передача первого этапа будет считана в записи, возможно, отделите конечные пробелы и добавьте символ новой строки, прежде чем передавать строку на следующую фазу.

В соответствии со стандартом, это также фаза, которая обрабатывает триграфы, такие как преобразование ??( в [ на 3270 терминала, который не имеет поддержки [ характера.

Примером фазы пятого является то, что вы пишете свой код на z/OS (используя EBCDIC), но перекрестно скомпилируете его для Linux/x86 (используя ASCII/Unicode).

В этом случае исходные символы в строковых литералах и символьных константах должны иметь представление ASCII, а не EBCDIC. В противном случае вы, скорее всего, получите какой-то поистине странный вывод на вашем Linux-боксе.

Смежные вопросы