<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://gunkies.org/index.php?action=history&amp;feed=atom&amp;title=C_Changes</id>
		<title>C Changes - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://gunkies.org/index.php?action=history&amp;feed=atom&amp;title=C_Changes"/>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=C_Changes&amp;action=history"/>
		<updated>2026-05-06T01:32:52Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.1</generator>

	<entry>
		<id>https://gunkies.org/w/index.php?title=C_Changes&amp;diff=28413&amp;oldid=prev</id>
		<title>Jnc: +cat</title>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=C_Changes&amp;diff=28413&amp;oldid=prev"/>
				<updated>2023-01-16T12:55:20Z</updated>
		
		<summary type="html">&lt;p&gt;+cat&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 12:55, 16 January 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l272&quot; &gt;Line 272:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 272:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: UNIX Documentation]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: C Language]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: C Language]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jnc</name></author>	</entry>

	<entry>
		<id>https://gunkies.org/w/index.php?title=C_Changes&amp;diff=19980&amp;oldid=prev</id>
		<title>Jnc: new cat</title>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=C_Changes&amp;diff=19980&amp;oldid=prev"/>
				<updated>2018-12-17T00:22:43Z</updated>
		
		<summary type="html">&lt;p&gt;new cat&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 00:22, 17 December 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l272&quot; &gt;Line 272:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 272:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Languages&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;C Language&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jnc</name></author>	</entry>

	<entry>
		<id>https://gunkies.org/w/index.php?title=C_Changes&amp;diff=19180&amp;oldid=prev</id>
		<title>Jnc: +cat</title>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=C_Changes&amp;diff=19180&amp;oldid=prev"/>
				<updated>2018-12-11T03:04:03Z</updated>
		
		<summary type="html">&lt;p&gt;+cat&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 03:04, 11 December 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l271&quot; &gt;Line 271:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 271:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: Languages]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jnc</name></author>	</entry>

	<entry>
		<id>https://gunkies.org/w/index.php?title=C_Changes&amp;diff=17311&amp;oldid=prev</id>
		<title>Jnc: Upload to CHWiki</title>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=C_Changes&amp;diff=17311&amp;oldid=prev"/>
				<updated>2018-08-24T20:48:09Z</updated>
		
		<summary type="html">&lt;p&gt;Upload to CHWiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This is the contents of the 'C Changes' help file, which is believed to refer to [[Typesetter C]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Type:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;help c_old&lt;br /&gt;
&lt;br /&gt;
to find out about older changes to C&lt;br /&gt;
&lt;br /&gt;
****************************************************&lt;br /&gt;
&lt;br /&gt;
 Changes to C preprocessor:&lt;br /&gt;
&lt;br /&gt;
1. Defines may be continued from line to line with&lt;br /&gt;
   backslash-newline&lt;br /&gt;
&lt;br /&gt;
2. You can undefine things with # undef xxx&lt;br /&gt;
&lt;br /&gt;
3. You can undefine standard things from the&lt;br /&gt;
   command line with&lt;br /&gt;
 	cc -Uxxx&lt;br /&gt;
   (like cc -Dxxx, but reversed).&lt;br /&gt;
&lt;br /&gt;
4. The &amp;lt;&amp;gt; brackets on include now have a distinct&lt;br /&gt;
   meaning again from &amp;quot;&amp;quot;; they do not search the&lt;br /&gt;
   local directory, but do search -I and standard places.&lt;br /&gt;
&lt;br /&gt;
5. There is a new preprocessor command&lt;br /&gt;
 	# if expression&lt;br /&gt;
   where expression should be an integer expression&lt;br /&gt;
   that can be evaluated at compile time.  Defined&lt;br /&gt;
   things may be used.  Strings that are not integers&lt;br /&gt;
   are either errors, or if they are undefined names&lt;br /&gt;
   are taken as zero.  Strings defined as themselves&lt;br /&gt;
   are 1 (i.e. # if unix works).  Strings defined as&lt;br /&gt;
   anything else are expanded and retried.  There are&lt;br /&gt;
   no assignments, floating point, pointers, etc.&lt;br /&gt;
   but the full range of integer operators work.&lt;br /&gt;
&lt;br /&gt;
6. There is another new command # else.&lt;br /&gt;
&lt;br /&gt;
*************************************&lt;br /&gt;
&lt;br /&gt;
Much new stuff in C.&lt;br /&gt;
&lt;br /&gt;
(1)	The notion of a `union' type is introduced.&lt;br /&gt;
The type is spcified by the construction&lt;br /&gt;
&lt;br /&gt;
 	union�����_____ { ... }&lt;br /&gt;
or&lt;br /&gt;
 	union�����_____ name { ... }&lt;br /&gt;
&lt;br /&gt;
which is isomorphic to a structure declaration.  The declaration&lt;br /&gt;
&lt;br /&gt;
 	union { int i; double d;} u;&lt;br /&gt;
&lt;br /&gt;
makes u a cell which may hold either an integer i or a double d.&lt;br /&gt;
To name the double, use `u.d'; to name the integer,&lt;br /&gt;
use `u.i'.  It is undefined to store into u.d and then to access&lt;br /&gt;
u.i, and vice versa.&lt;br /&gt;
&lt;br /&gt;
The actual amount of storage allocated is the maximum required by the &lt;br /&gt;
members.  This facility is intended to solve some&lt;br /&gt;
problems encountered in dealing with data structures&lt;br /&gt;
such as trees, wherea node may contain pointers&lt;br /&gt;
either to other nodes or to leaves.&lt;br /&gt;
You will not go far wrong if you think of a union&lt;br /&gt;
declaration as a structure declaration&lt;br /&gt;
in which all the fields have offset 0 from the&lt;br /&gt;
start of the structure.&lt;br /&gt;
&lt;br /&gt;
(2)	Generalized conversion operators have been introduced.&lt;br /&gt;
The syntax is&lt;br /&gt;
&lt;br /&gt;
 	(type)expression&lt;br /&gt;
&lt;br /&gt;
where `type' is the name of a type to which the expression is&lt;br /&gt;
converted.  The semantics of the conversion are the same&lt;br /&gt;
as if the expression were assigned to a variable of the&lt;br /&gt;
named type.&lt;br /&gt;
&lt;br /&gt;
The type is specified by giving a type keyword (like `int'&lt;br /&gt;
etc.) possibly followed by a declarator (in the sense&lt;br /&gt;
of the C manual) except that the name is left out.&lt;br /&gt;
In other words, the whole thing looks like a declaration of&lt;br /&gt;
a single variable with the variable deleted.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 	(int)3.14159	convert to integer&lt;br /&gt;
 	(int *) p		convert to integer pointer&lt;br /&gt;
 	(int ())		convert to function (meaningless, but&lt;br /&gt;
 				that's how it would be said)&lt;br /&gt;
 	(int (*)())p		convert to pointer to functiion&lt;br /&gt;
&lt;br /&gt;
The (type) construction behaves just like an ordinary unary&lt;br /&gt;
operator in precedence and is likewise right-associative.&lt;br /&gt;
&lt;br /&gt;
(3)	The (type) construction can also be used in the form&lt;br /&gt;
&lt;br /&gt;
 	sizeof(type)&lt;br /&gt;
&lt;br /&gt;
which is a (compile-time) number equal to the number of bytes of&lt;br /&gt;
storage occupied by an object of the named type.&lt;br /&gt;
&lt;br /&gt;
(4)	It is now possible, and in fact encouraged, to write&lt;br /&gt;
initializations using an '=', thus:&lt;br /&gt;
&lt;br /&gt;
int	x = 10;&lt;br /&gt;
double	y[] = {1,2,3};&lt;br /&gt;
&lt;br /&gt;
There is no change in meaning from what was previously available.&lt;br /&gt;
&lt;br /&gt;
(5)	The assignment-type operators may now be written with the&lt;br /&gt;
binary suboperator first and the '=' second:&lt;br /&gt;
&lt;br /&gt;
 	a += b;&lt;br /&gt;
 	a &amp;lt;&amp;lt;= b;&lt;br /&gt;
&lt;br /&gt;
Doing things this way removes such lexical unpleasantness&lt;br /&gt;
as the expression 'a=-b' which is really ambiguous.&lt;br /&gt;
It would be nice to remove the older forms altogether,&lt;br /&gt;
but this won't happen instantly.&lt;br /&gt;
&lt;br /&gt;
(6)	The treatment of the keyword `extern' at the top level&lt;br /&gt;
is more in line with GCOS and IBM compilers;&lt;br /&gt;
the declaration&lt;br /&gt;
&lt;br /&gt;
 	extern int x;&lt;br /&gt;
&lt;br /&gt;
does not reserve storage, and in fact no reference&lt;br /&gt;
to x is generated unless it is used.  (It will not&lt;br /&gt;
be loaded from a library just because of such a declaration).&lt;br /&gt;
&lt;br /&gt;
(7)	This one may affect a number of programs; we'll see how it goes.&lt;br /&gt;
Using an undefined name in an initializer gets a warning.&lt;br /&gt;
It is a rather suspicious&lt;br /&gt;
sort of thing to do anyway (the compiler is forced to&lt;br /&gt;
impute a type to the name without sufficient information)&lt;br /&gt;
and it led to a bug in initialization inside functions&lt;br /&gt;
not fixable without adding a wart on the wart.&lt;br /&gt;
&lt;br /&gt;
(8)	The following bugs in C have been fixed.&lt;br /&gt;
&lt;br /&gt;
In the declaration&lt;br /&gt;
  f() register x; {...}&lt;br /&gt;
no diagnostic was produced, except an internal error&lt;br /&gt;
when x was later used.&lt;br /&gt;
&lt;br /&gt;
There were two separate optimizer (c2) bugs which caused&lt;br /&gt;
c2 to loop (on rather strange input).&lt;br /&gt;
&lt;br /&gt;
Most but not all #define names the same in their first eight characters&lt;br /&gt;
but different later were taken to be different.  To avoid&lt;br /&gt;
false confidence, only the first eight are now significant,&lt;br /&gt;
uniformly.&lt;br /&gt;
&lt;br /&gt;
A function name with a subscript was not diagnosed.&lt;br /&gt;
&lt;br /&gt;
Register declarations in inner blocks were sometimes unjustly&lt;br /&gt;
treated as plain auto declarations.&lt;br /&gt;
&lt;br /&gt;
Arrays declared with typedef sometimes had the internal&lt;br /&gt;
notion of the array size wrong.&lt;br /&gt;
&lt;br /&gt;
In certain initializations, a missing &amp;quot;.even&amp;quot; caused&lt;br /&gt;
an assembler &amp;quot;odd address&amp;quot; diagnostic.&lt;br /&gt;
&lt;br /&gt;
Certain differences of rather strange pointer&lt;br /&gt;
expressions got an internal diagnostic.&lt;br /&gt;
(reported in Minisystems Newsletter).&lt;br /&gt;
&lt;br /&gt;
unsigned =&amp;gt;&amp;gt; ...  compiled wrong code.&lt;br /&gt;
&lt;br /&gt;
long = !long compiled wrong code.&lt;br /&gt;
&lt;br /&gt;
Use of ?: in initializers led to an unjustified syntax complaint.&lt;br /&gt;
&lt;br /&gt;
*************************************&lt;br /&gt;
&lt;br /&gt;
1. The &amp;lt;&amp;gt; brackets in &amp;quot;include&amp;quot; statements are&lt;br /&gt;
   no longer needed.  Any include file is looked&lt;br /&gt;
   for first relative to the directory where the&lt;br /&gt;
   source file is; then relative to any directories&lt;br /&gt;
   named in -I arguments, in order; and then in&lt;br /&gt;
   /usr/include.&lt;br /&gt;
&lt;br /&gt;
   In a few days we will start giving warning&lt;br /&gt;
   messages for # include &amp;lt;&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
2. You can now use -Dxx=yy on the command line&lt;br /&gt;
   to define 'xx' with a value.&lt;br /&gt;
&lt;br /&gt;
*************************************&lt;br /&gt;
&lt;br /&gt;
Several significant, but, it is hoped, upward compatible changes&lt;br /&gt;
in C have been installed.&lt;br /&gt;
&lt;br /&gt;
1. Type `unsigned'.&lt;br /&gt;
&lt;br /&gt;
A new fundamental data type with keyword `unsigned,' is&lt;br /&gt;
available.  It may be used alone:&lt;br /&gt;
&lt;br /&gt;
        unsigned u;&lt;br /&gt;
&lt;br /&gt;
or as an adjective with `int'&lt;br /&gt;
&lt;br /&gt;
        unsigned int u;&lt;br /&gt;
&lt;br /&gt;
with the same meaning.  There are not yet (or possibly ever)&lt;br /&gt;
unsigned longs or chars.  The meaning of an unsigned variable is&lt;br /&gt;
that of an integer modulo 2^n, where n is 16 on the PDP-11.  All&lt;br /&gt;
operators whose operands are unsigned produce results consistent&lt;br /&gt;
with this interpretation except division and remainder where the&lt;br /&gt;
divisor is larger than 32767; then the result is incorrect.  The&lt;br /&gt;
dividend in an unsigned division may however have any value (i.e.&lt;br /&gt;
up to 65535) with correct results.  Right shifts of unsigned&lt;br /&gt;
quantities are guaranteed to be logical shifts.&lt;br /&gt;
&lt;br /&gt;
When an ordinary integer and an unsigned integer are combined&lt;br /&gt;
then the ordinary integer is mapped into an integer mod 2^16 and&lt;br /&gt;
the result is unsigned.  Thus, for example `u = -1' results in&lt;br /&gt;
assigning 65535 to u.  This is mathematically reasonable, and&lt;br /&gt;
also happens to involve no run-time overhead.&lt;br /&gt;
&lt;br /&gt;
When an unsigned integer is assigned to a plain integer, an&lt;br /&gt;
(undiagnosed) overflow occurs when the unsigned integer exceeds&lt;br /&gt;
2^15-1.&lt;br /&gt;
&lt;br /&gt;
It is intended that unsigned integers be used in contexts where&lt;br /&gt;
previously character pointers were used (artificially and&lt;br /&gt;
nonportably) to represent unsigned integers.&lt;br /&gt;
&lt;br /&gt;
2.  Block structure.&lt;br /&gt;
&lt;br /&gt;
A sequence of declarations may now appear at the beginning of any&lt;br /&gt;
compound statement in {}.  The variables declared thereby are&lt;br /&gt;
local to the compound statement.  Any declarations of the same&lt;br /&gt;
name existing before the block was entered are pushed down for&lt;br /&gt;
the duration of the block.  Just as in functions, as before, auto&lt;br /&gt;
variables disappear and lose their values when the block is left;&lt;br /&gt;
static variables retain their values.  Also according to the same&lt;br /&gt;
rules as for the declarations previously allowed at the start of&lt;br /&gt;
functions, if no storage class is mentioned in a declaration the&lt;br /&gt;
default is automatic.&lt;br /&gt;
&lt;br /&gt;
Implementation of inner-block declarations is such that there is&lt;br /&gt;
no run-time cost associated with using them.&lt;br /&gt;
&lt;br /&gt;
3.  Initialization&lt;br /&gt;
&lt;br /&gt;
Declarations, whether external, at the head of functions, or&lt;br /&gt;
in inner blocks may have initializations whose syntax is the same&lt;br /&gt;
as previous external declarations with initializations.  The only&lt;br /&gt;
restrictions are that automatic structures and arrays may not be&lt;br /&gt;
initialized (they can't be assigned either); nor, for the moment&lt;br /&gt;
at least, may external variables when declared inside a function.&lt;br /&gt;
&lt;br /&gt;
The declarations and initializations should be thought of as&lt;br /&gt;
occurring in lexical order so that forward references in&lt;br /&gt;
initializations are unlikely to work.  E.g.,&lt;br /&gt;
&lt;br /&gt;
        { int a a;&lt;br /&gt;
          int b c;&lt;br /&gt;
          int c 5;&lt;br /&gt;
          ...&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
Here a is initialized by itself (and its value is thus&lt;br /&gt;
undefined); b is initialized with the old value of c (which is&lt;br /&gt;
either undefined or any c declared in an outer block).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jnc</name></author>	</entry>

	</feed>