Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old August 29th, 2008, 03:55 PM
August Karlstrom
Guest
 
Posts: n/a
Default Re: K&R Exercise 6-2

Richard Heathfield wrote:
[...]
Quote:
In C90, an implementation must be able to distinguish between external
identifiers that are unique in the first 6 characters (without regard to
case!). A program such as the one required in Exercise 6-2 could be useful
for diagnosing source code that ignores this limit (as I suspect a vast
amount of source code does).
So a library which exports e.g. the identifiers string_prepend and
string_append are not really C90 compliant?


August
  #2  
Old August 29th, 2008, 04:14 PM
Harald van =?UTF-8?b?RMSzaw==?=
Guest
 
Posts: n/a
Default Re: K&R Exercise 6-2

On Fri, 29 Aug 2008 16:51:56 +0200, August Karlstrom wrote:
Quote:
Richard Heathfield wrote:
[...]
Quote:
>In C90, an implementation must be able to distinguish between external
>identifiers that are unique in the first 6 characters (without regard
>to case!). A program such as the one required in Exercise 6-2 could be
>useful for diagnosing source code that ignores this limit (as I suspect
>a vast amount of source code does).
>
So a library which exports e.g. the identifiers string_prepend and
string_append are not really C90 compliant?
Correct. However, they are already not C90 compliant -- and not C99
compliant either -- for another reason: external identifiers starting with
str and followed by a lowercase letter are reserved for the implementation.
  #3  
Old August 29th, 2008, 04:14 PM
Richard Heathfield
Guest
 
Posts: n/a
Default Re: K&R Exercise 6-2

August Karlstrom said:
Quote:
Richard Heathfield wrote:
[...]
Quote:
>In C90, an implementation must be able to distinguish between external
>identifiers that are unique in the first 6 characters (without regard to
>case!). A program such as the one required in Exercise 6-2 could be
>useful for diagnosing source code that ignores this limit (as I suspect
>a vast amount of source code does).
>
So a library which exports e.g. the identifiers string_prepend and
string_append are not really C90 compliant?
Right, for two reasons:

(1) the names invade implementation namespace;
(2) the names are a touch on the long side.

In practice, (1) is often ignored, and (2) is practically always ignored.
But strictly speaking, yes, you are correct.

Of the two reasons, (1) is probably the more important. Whilst it is
certainly possible that some people are still using 6-sig-char linkers
nowadays, it isn't terribly likely that terribly many people are. Even
twenty years ago (and probably more), people were ignoring the 6-character
thing, and it doesn't seem to have caused any major software crises.

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
  #4  
Old August 30th, 2008, 01:15 PM
August Karlstrom
Guest
 
Posts: n/a
Default Re: K&R Exercise 6-2

Harald van Dijk wrote:
Quote:
On Fri, 29 Aug 2008 16:51:56 +0200, August Karlstrom wrote:
Quote:
>Richard Heathfield wrote:
>[...]
Quote:
>>In C90, an implementation must be able to distinguish between external
>>identifiers that are unique in the first 6 characters (without regard
>>to case!). A program such as the one required in Exercise 6-2 could be
>>useful for diagnosing source code that ignores this limit (as I suspect
>>a vast amount of source code does).
>So a library which exports e.g. the identifiers string_prepend and
>string_append are not really C90 compliant?
>
Correct. However, they are already not C90 compliant -- and not C99
compliant either -- for another reason: external identifiers starting with
str and followed by a lowercase letter are reserved for the implementation.
Annoying. Is there a way to make a compiler like GCC emit a warning in
this case?


August
  #5  
Old August 30th, 2008, 01:15 PM
August Karlstrom
Guest
 
Posts: n/a
Default Re: K&R Exercise 6-2

Richard Heathfield wrote:
Quote:
August Karlstrom said:
Quote:
>So a library which exports e.g. the identifiers string_prepend and
>string_append are not really C90 compliant?
>
Right, for two reasons:
>
(1) the names invade implementation namespace;
(2) the names are a touch on the long side.
>
In practice, (1) is often ignored, and (2) is practically always ignored.
But strictly speaking, yes, you are correct.
>
Of the two reasons, (1) is probably the more important. Whilst it is
certainly possible that some people are still using 6-sig-char linkers
nowadays, it isn't terribly likely that terribly many people are. Even
twenty years ago (and probably more), people were ignoring the 6-character
thing, and it doesn't seem to have caused any major software crises.
Thanks for the clarification.


August
 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles