|
Thanks Rajkumar,
Here is the compile error message in Visual Studio 2008. With warning level 3 -- default one.
d:\visual studio 2008\projects\test_array3\test_array3\main2.cpp(1) : error C2146: syntax error : missing ';' before identifier 'mean'
d:\visual studio 2008\projects\test_array3\test_array3\main2.cpp(1) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\visual studio 2008\projects\test_array3\test_array3\main2.cpp(1) : error C2143: syntax error : missing ';' before 'this'
d:\visual studio 2008\projects\test_array3\test_array3\main2.cpp(1) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
d:\visual studio 2008\projects\test_array3\test_array3\main2.cpp(2) : error C2143: syntax error : missing ';' before '{'
d:\visual studio 2008\projects\test_array3\test_array3\main2.cpp(2) : error C2447: '{' : missing function header (old-style formal list?)
Looks like int a[0] can not be used.
regards,
George
|
|
|
|
|
can u post the code, it seams something else.
|
|
|
|
|
Sorry Rajkumar,
You are correct. I posted the wrong output and source codes.
Here is the current version, please review.
d:\visual studio 2008\projects\test_array3\test_array3\main2.cpp(2) : warning C4200: nonstandard extension used : zero-sized array in struct/union
Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
struct A{
int a[0];
};
environment Visual Studio 2008 and warning level 3 (default).
regards,
George
|
|
|
|
|
so no change for this behavior from VC2005 to VC2008, change the warning level to 1, i think u won't get warning also.
|
|
|
|
|
Thanks Rajkumar,
I have verified you are correct.
regards,
George
|
|
|
|
|
|
George_George wrote: Sometimes, we allocate array of zero elements. I am wondering for what regualr purpose will we do that?
It seems u used to allocate. sometimes
without any regular purpose?
char *ptr = new char[0];
eventhough empty, returns unique value of address, any trick using that?
modified on Sunday, February 17, 2008 10:02 AM
|
|
|
|
|
Thanks Rajkumar,
Do you have any experience of using in this way?
regards,
George
|
|
|
|
|
George_George wrote: Sometimes, we allocate array of zero elements.
We? We who?
Alcohol. The cause of, and the solution to, all of life's problems - Homer Simpson
|
|
|
|
|
Thanks kakan,
I mean I am reading code by others.
regards,
George
|
|
|
|
|
Not exactly we.
|
|
|
|
|
Hello everyone,
We always write const int other than int const, are they the same?
Example,
int const & x = 10;
const int& y = 10;
thanks in advance,
George
|
|
|
|
|
type qualifiers are used to modify the property of type of the identifier.
so,
"int const x" and "const int x" are same, as const qualifier modifies the type "int" of identifier x.
the change of qualifier position has effect say,
"int const *x" and "int *const x" this is different, as const qualifier modifies the type "int" of expression (*x) for former and const qualifier modifies the type "int *" of identifier "x" for later.
and "int const *x" and "const int *x" are same, as both const qualifier modifies the type "int" of expression (*x)
similarly "int const &x" and "const int &y" are same and "int const &x" and "int & const x" are different although the later is ignored.
modified on Sunday, February 17, 2008 10:24 PM
|
|
|
|
|
Thanks Rajkumar,
Rajkumar R wrote: "int const &x" and "int & const x" are different although the former is not allowed.
Why the former "int const &x" is not allowed? The following code can compile in Visual Studio 2008.
int main()
{
int const &x = 10;
return 0;
}
regards,
George
|
|
|
|
|
sorry typo error i mean "later", fixed.
|
|
|
|
|
No Rajkumar,
it is allowed, but always ignored, since reference are always const.
Here is the code and related warning message,
main.cpp(4) : warning C4227: anachronism used : qualifiers on reference are ignored
int main()
{
int i = 100;
int & const x = i;
return 0;
}
regards,
George
|
|
|
|
|
"qualifiers on reference are ignored" means no effect on "const" qualifier
i.e; int &const x is taken as int &x;
i used to consider warning as error. (there is an option too (/WX) )
if it is allowed it should not be ignored.
any way i can change my mind, "not allowed" to "ignored"
|
|
|
|
|
Thanks Rajkumar,
My question is answered.
regards,
George
|
|
|
|
|
Hi george,
Why had ref been implimented in this way that its a 'const' implictly. Why can not a reference when once bound to an object at time of declaration be allowed to bound to some other object? why this kind of restriction?
Regards
Priyanka
|
|
|
|
|
Please try the following sample code,
int main()
{
int a = 10;
int b = 20;
int& pi = a;
pi = b;
return 0;
}
regards,
George
|
|
|
|
|
See this[^] thread if helpfuls for you.
|
|
|
|
|
Thanks Hamid,
I have read the link, but I do not think it relates to my question. The discussion is about const reference to temporary object, but I am talking about whether int const& or const int& is better.
regards,
George
|
|
|
|
|
No it was for const& not your question I think its helpful for you,ok?
|
|
|
|
|
Sure, helpful. Thanks Hamid!
regards,
George
|
|
|
|
|