kenny@uiucdcsb.cs.uiuc.edu (05/27/87)
Running 1.1 (so I don't know whether this has been fixed yet):
When a local variable is declared ``const,'' the compiler appears to
assume that it is automatic as well. This leads to the following
anomaly:
-------------------- bad.c --------------------
main () {
const int array [] = { 1, 2, 3 };
}
CC bad.c:
"bad.c", line 3: sorry, not implemented: initialization of automatic aggregates
"bad.c", line 3: sorry, not implemented: initializer list for local variable array
2 errors
-------------------- good.c -------------------
main () {
static const int array [] = { 1, 2, 3 };
}
(compiles cleanly)
-----------------------------------------------
Why are ``const'' variables (other than parameters, of course) not
assumed to be static? In addition to the above annoyance, it seems
like a pointless waste of stack space. Have I overlooked something?
Kevin Kenny UUCP: {ihnp4,pur-ee,convex}!uiucdcs!kenny
Department of Computer Science ARPA: kenny@B.CS.UIUC.EDU (kenny@UIUC.ARPA)
University of Illinois CSNET: kenny@UIUC.CSNET
1304 W. Springfield Ave.
Urbana, Illinois, 61801 Voice: (217) 333-8740ark@alice.UUCP (06/07/87)
In article <165700009@uiucdcsb>, kenny@uiucdcsb.UUCP writes: > Why are ``const'' variables (other than parameters, of course) not > assumed to be static? In addition to the above annoyance, it seems > like a pointless waste of stack space. Have I overlooked something? Saying a variable is a ``const'' is saying that its value won't change over its lifetime. It doesn't promise to initialize it to a constant. There's no problem in saying int n; cin >> n; const k = n * 2;
meissner@dg_rtp.UUCP (06/15/87)
/* somebody else from uiucdcsb */ > When a local variable is declared ``const,'' the compiler appears to > assume that it is automatic as well. > Why are ``const'' variables (other than parameters, of course) not > assumed to be static? In article <354@formtek.UUCP> kls@formtek.UUCP (Karl Swartz) writes: > In dpANSI C, const functions as a type-modifier (even though) they > don't call it that. Thus, "const int foo" has no explicit storage- > class and is therefore assumed to be automatic (within a function > definition); the "const" has no effect in this regard. > > Perhaps C++ is thinking along the same lines? Ughhhh, it was the other way around, dpANSI adopted const from C++ (and then added volatile to allow optization on memory mapped I/O). -- Michael Meissner, Data General Uucp: ...mcnc!rti!dg_rtp!meissner It is 11pm, do you know what your sendmail and uucico are doing?