C translation phases concrete examples

According to the C11 standard (5.1.1.2 Translation phases) there are 8 translation phases. Can anyone give a concrete example for each of the phases.

For example at phase 1 there is:

Physical source file multibyte characters are mapped, in an implementation- defined manner, to the source character set...

so can I have an example of what happens when that mapping is executed and so on for other phases?


Well, one example of phase one would be storing your source code into a record-oriented format, such as in z/OS on the mainframe.

These data sets have fixed record sizes so, if your data set specification was FB80 (fixed, blocked, record length of 80), the "line":

int main (void)

would be stored as those fifteen characters followed by sixty-five spaces, and no newline.

Phase one translation would read in the record, possibly strip off the trailing spaces, and add a newline character, before passing the line on to the next phase.

As per the standard, this is also the phase that handles trigraphs, such as converting ??( into [ on a 3270 terminal that has no support for the [ character.

An example of phase five is if you're writing your code on z/OS (using EBCDIC) but cross-compiling it for Linux/x86 (using ASCII/Unicode).

In that case the source characters within string literals and character constants must have the ASCII representation rather than the EBCDIC one. Otherwise, you're likely to get some truly bizarre output on your Linux box.

链接地址: http://www.djcxy.com/p/73290.html

上一篇: 在C语言的翻译阶段5和6中,什么时候空白显着?

下一篇: C翻译阶段的具体例子