Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

(K&R) At least the first 31 characters of an internal name are significant?

When taken literally, it makes sense, but what exactly does it mean to be a significant character of a variable name?

I'm a beginning learner of C using K&R. Here's a direct quote from the book:

"At least the first 31 characters of an internal name are significant. For function names and external variables, the number may be less than 31, because external names may be used by assemblers and loaders over which the language has no control. For external names, the standard guarantees only for 6 characters and a single case."

By the way, what does it mean by "single case"?

like image 817
withchemicals Avatar asked Dec 30 '09 16:12

withchemicals


3 Answers

Single Case usually means "lower case". Except in some OS's where it means "upper case". The point is that mixed case is not guaranteed to work.

abcdef

ABCDEF

differ only in case. This is not guaranteed to work.

The "Significance" issue is one of how many letters can be the same.

Let's say we only have 6 significant characters.

a_very_long_name

a_very_long_name_thats_too_similar

Look different, but the first 16 characters are the same. Since only 6 are significant, those are the same variable.

like image 170
S.Lott Avatar answered Oct 14 '22 06:10

S.Lott


It means what you fear it means. For external names, the C standard at the time K&R 2nd ed. was written really does give only six case-insensitive characters! So you can't have afoobar and aFooBaz as independent entities.

This absurd limitation (which was to accommodate legacy linkers now long-gone) is no longer relevant to any environment much. The C99 standard offers 31 case-sensitive characters for external names and 63 internally, and commonly-used linkers in practice support much longer names.

like image 39
bobince Avatar answered Oct 14 '22 05:10

bobince


It just means that if you have two variables named

abcdefghijklmnopqrstuvwxyz78901A,

and

abcdefghijklmnopqrstuvwxyz78901B,

that there is no guarantee that will be treated as different, separate variables...

like image 3
Charles Bretana Avatar answered Oct 14 '22 06:10

Charles Bretana