Les Hardy ha scritto: > >> The C language, in facts, does not even have CONSTs - it goes with >> #define. So, it would be correct to forbid STATIC when declaring CONSTs. >> > Surely this is not correct. ANSI C uses const, and C++ also uses the > const keyword. > #define (a preprocessor directive) is a relic from old C, and const is > now recommended use instead. > Surely, according to http://www.ericgiguere.com/articles/ansi-c-summary.html > The declaration: > enum colours { RED, BLUE, GREEN }; > > > would declare colours as an enumeration tag representing the integer > constants RED, BLUE and GREEN. These enumeration constants are given > integer values starting at 0 and increasing by 1 with each identifier. > > An enumeration constant may be used wherever an integer is expected. > The following is equivalent to the above enumerated type: > > #define RED 0 > #define BLUE 1 > #define GREEN 2 >
Moreover, from http://tigcc.ticalc.org/doc/keywords.html > > > _const_ > > *Makes variable value or pointer parameter unmodifiable.* > > When |const| is used with a variable, it uses the following syntax: > > const/variable-name/ [ =/value/]; > > > In this case, the |const| modifier allows you to assign an initial > value to a variable that cannot later be changed by the program. For > example, > > const my_age = 32; > > > Any assignments to |'my_age'| will result in a compiler error. > However, such declaration is quite different than using > > #define my_age 32 > > In the first case, the compiler allocates a memory for |'my_age'| and > stores the initial value 32 there, but it will not allow any later > assignment to this variable. But, in the second case, all occurences > of |'my_age'| are simply replaced with 32 by the preprocessor > <http://tigcc.ticalc.org/doc/cpp.html>, and no memory will be > allocated for it. You perhaps refer to "const" modifier, which is different from declaring a constant, like in > public: > WinEDA_VertexCtrl( wxWindow* parent, const wxString& title, > wxBoxSizer* BoxSizer, int units, int > internal_unit ); > Also, it would be correct to use static with const, the line below would > be correct use. > > static const int daysPerMonth[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; > In this case - talking about C and not C++: > |static| tells that a function or data element is only known within > the scope of the current compile. In addition, if you use the |static| > keyword with a variable that is local to a function, it allows the > last value of the variable to be preserved between successive calls to > that function. "const" says that data is not modifiable, so "static" would say the same thing. Note also the ambiguity of the keyword when applied to data global to a module, and data local to a function - the same keyword does two very different things. > > Having said that, The original question was not about C, I think Fabian > was simply asking about the scope of constants in classes (in Gambas) > Uhm... is it forbidden to cite other languages to better explain a concept? So why you cited C++? Anyway, you are right, the original question was about scope. In gambas scope is governed by PRIVATE and PUBLIC. Full stop. If you feel that my reply is a little hurting, excuse me; it is because your reply seemed hurting to me. Prove to me that I am wrong and I will publicly apologize. Regards, Doriano ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user