compile error about void*



 DEVELOP > c-Plus-Plus > compile error about void*

LINK TO THIS PAGE  


rating :  0   |  0


  Page 1 of 1

1

 
Topic: DEVELOP > c-Plus-Plus
User: "George2"
Date: 17 Jan 2008 02:10:16 AM
Object: compile error about void*
Hello everyone,
What is wrong with the code, I just want to allocate an array of 100
void* pointers. :-)
[Code]
int main()
{
void** p;
p = new (void*) [100];
return 0;
}
[/Code]

d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) : error C2143: syntax error : missing ';' before '['

1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C3409: empty attribute block is not allowed
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ']' before 'constant'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before 'constant'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before ']'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before ']'
thanks in advance,
George
.

User: ""

Title: Re: compile error about void* 17 Jan 2008 02:18:07 AM

void** p;

p = new (void*) [100];

Write this:
p = new void*[100];
You syntax: using a special new operator.
.

User: "jalina"

Title: Re: compile error about void* 17 Jan 2008 05:57:24 AM
George2 a écrit :

Hello everyone,


What is wrong with the code, I just want to allocate an array of 100
void* pointers. :-)

[Code]
int main()
{
void** p;

p = new (void*) [100];

return 0;
}
[/Code]

d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) : error C2143: syntax error : missing ';' before '['

1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C3409: empty attribute block is not allowed
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ']' before 'constant'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before 'constant'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before ']'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before ']'


thanks in advance,
George

typedef void* PVOID;
int
main()
{
PVOID *p;
p = new PVOID[100];
return 0;
}
.

User: "Michael DOUBEZ"

Title: Re: compile error about void* 17 Jan 2008 02:28:36 AM
George2 a écrit :

Hello everyone,


What is wrong with the code, I just want to allocate an array of 100
void* pointers. :-)

[Code]
int main()
{
void** p;

p = new (void*) [100];

p = new void*[100];


return 0;
}
[/Code]

d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) : error C2143: syntax error : missing ';' before '['

1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C3409: empty attribute block is not allowed
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ']' before 'constant'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before 'constant'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before ']'
1>d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) :
error C2143: syntax error : missing ';' before ']'


thanks in advance,
George

.
User: "James Kanze"

Title: Re: compile error about void* 18 Jan 2008 04:20:57 AM
On Jan 17, 9:28 am, Michael DOUBEZ <michael.dou...@free.fr> wrote:

George2 a =E9crit :

What is wrong with the code, I just want to allocate an array of 100
void* pointers. :-)
[Code]
int main()
{
void** p;
p =3D new (void*) [100];

p =3D new void*[100];

Or "p =3D new (void * [100]) ;".
The type specifier in a new expression has a very restricted
syntax. In particular, it cannot contain parentheses unless it
is entirely surrounded by parentheses.
Note that the syntax "new (int*)[100]" would be legal syntax,
but doesn't do what you might expect, and will invoke undefined
behavior at run-time---it allocates a single int*, then uses it
as if it were a pointer to the first element of an array,
accessing the 101st element. Of course, the resulting type of
the expression is int, so you will almost certainly get a type
error when you try to assign the results.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34
.


User: "anon"

Title: Re: compile error about void* 17 Jan 2008 02:22:19 AM
George2 wrote:

Hello everyone,


What is wrong with the code, I just want to allocate an array of 100
void* pointers. :-)

[Code]
int main()
{
void** p;

p = new (void*) [100];

return 0;
}
[/Code]

d:\visual studio 2008\projects\test_void1\test_void1\main.cpp(5) : error C2143: syntax error : missing ';' before '['

It tells you whats wrong.
Try this instead:
int main()
{
void** p;
p = new void* [100];
return 0;
}
.

User: "Ioannis Vranos"

Title: Re: compile error about void* 19 Jan 2008 06:18:25 PM
George2 wrote:

Hello everyone,


What is wrong with the code, I just want to allocate an array of 100
void* pointers. :-)

[Code]
int main()
{
void** p;

p = new (void*) [100];

return 0;
}
[/Code]

Wrong syntax:
The correct way to do what you want is:
void **p= new void *[100];
.

User: "=?iso-8859-1?q?Tom=E1s_=D3_h=C9ilidhe?="

Title: Re: compile error about void* 17 Jan 2008 07:58:23 AM
George2:

p = new (void*) [100];

Where T is a type:
If you want an array of pointers then:
T*[num]
If you want a pointer to an array, then:
T(*)[num]
--
Tomás Ó hÉilidhe
.
User: "James Kanze"

Title: Re: compile error about void* 18 Jan 2008 04:31:53 AM
On Jan 17, 2:58 pm, "Tom=E1s =D3 h=C9ilidhe" <t...@lavabit.com> wrote:

George2:

p =3D new (void*) [100];

Where T is a type:
If you want an array of pointers then:
T*[num]
If you want a pointer to an array, then:
T(*)[num]

Not in a new expression. In a new expression, you'd have to put
that in parentheses (i.e. "(T(*)[num])").
More generally, I don't think there's any context in the
language where "(void*)[100]" could be legal. If the [...] is
the subscript operator, then what precedes must be an expression
(and "(void*)" isn't a legal expression). And if the [...] is
meant to be part of a declaration, the only context in a
declaration where (void*) would be legal is as a list of
function parameters, and you can't declare a function to return
an array. (You can declare a function to return a pointer or a
reference to an array, but in this case, it would be something
like:
int (&f(void*))[100] ;
with an extra closing ) in the string.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34
.


User: "Jerry Coffin"

Title: Re: compile error about void* 19 Jan 2008 05:40:03 PM
In article <852ad1fa-f151-4bb5-b2c6-802042120aa8
@m34g2000hsf.googlegroups.com>,
says...

Hello everyone,


What is wrong with the code, I just want to allocate an array of 100
void* pointers. :-)

[Code]
int main()
{
void** p;

p = new (void*) [100];

return 0;
}
[/Code]

You've gotten a number of answers that show the problem with the syntax
you're using. None, however, has mentioned that there are usually better
ways of doing this in C++. If you really want to do this, something like
"std::vector<void *> p(100)" will do the job -- but an array (or vector)
of pointers to void sounds somewhat questionable in itself. If you're
doing something like writing your own memory allocator, this is likely
to make sense -- but for most code, a pointer to void (not to mention a
lot of pointers to void) tends to indicate a possible problem.
--
Later,
Jerry.
The universe is a figment of its own imagination.
.


  Page 1 of 1

1

 


Related Articles
 

NEWER

pg.1232     pg.940     pg.716     pg.544     pg.412     pg.311     pg.234     pg.175     pg.130     pg.96     pg.70     pg.50     pg.35     pg.24     pg.16     pg.10     pg.6     pg.3     pg.1

OLDER