|
|
1.1 root 1: This is a partial list of how `gcc -traditional' disagrees with
2: traditional C compilers.
3:
4: ---------------------------------------------------------------------------
5: K&R-1 (2.4.3) says:
6:
7: "If the character following a backslash is not one of those
8: specified {in the table above}, the backslash is ignored."
9:
10: Up until recently, `gcc -traditional' complained about \x \a and \v
11: appearing in a character or string literal. I believe however that
12: this non-feature has been eliminated (recently).
13:
14: ---------------------------------------------------------------------------
15: When in -traditional mode, gcc allows the following erroneous pair of
16: declarations to appear together in a given scope:
17:
18: typedef int foo;
19: typedef foo foo;
20:
21: ---------------------------------------------------------------------------
22: K&R-1 (8.5) says:
23:
24: "No field may be wider than a word."
25:
26: Gcc however allows:
27:
28: struct S { int i:33; };
29:
30: ---------------------------------------------------------------------------
31: In K&R-1 there is no restriction against comments crossing include file
32: boundaries. Gcc however doesn't allow this, even when in -traditional mode.
33:
34: ---------------------------------------------------------------------------
35: Regarding the length of identifiers, K&R-1 (2.2) says:
36:
37: "No more than the first eight characters are significant,
38: although more may be used."
39:
40: Gcc treats all characters of identifiers as significant, even when in
41: -traditional mode.
42:
43: ---------------------------------------------------------------------------
44: K&R-1 (2.2) says:
45:
46: "An identifier is a sequence of letters and digits; the first
47: character must be a letter. The underscore _ counts as a letter."
48:
49: Gcc also allows dollar signs in identifiers. (This may also be an issue
50: for the -pedantic option.)
51:
52: ---------------------------------------------------------------------------
53:
54:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.