On Thu, 2008-01-03 at 16:01 +0100, Hans de Goede wrote:
Jakub,
Any chance you could explain this one to me:
http://sunsite.mff.cuni.cz/rawhide20071220-gcc43/fails-even-with-41/machi...
In file included from /usr/include/allegrogl/gl_ext.h:27,
from /usr/include/alleggl.h:68,
from menu.cpp:12:
/usr/include/allegrogl/GLext/gl_ext_api.h:1827: error: '<anonymous>' has
incomplete type
/usr/include/allegrogl/GLext/gl_ext_api.h:1827: error: invalid use of 'GLvoid'
I just tried to build the rawhide machineball sources on F-8 and there they
work fine. The offending line in /usr/include/allegrogl/GLext/gl_ext_api.h is:
AGL_API(void, EndTransformFeedbackNV, (GLvoid))
Which basically translates to:
void EndTransformFeedbackNV(GLvoid);
And GLvoid is defined in:
/usr/include/GL/gl.h, which gets included by /usr/include/alleggl.h before
including /usr/include/allegrogl/gl_ext.h.
GLvoid is defined as:
typedef void GLvoid;
The only reason I can see for this not working is that:
/usr/include/alleggl.h
Does not declare the prototypes in it and its included files as
extern "C" {
Could that explain this?
I don't think so.
openvrml has the same failure; and in this case the code is in an
'extern "C"' block.
I've recently had a user report this same problem with gcc 4.2.
Strange though that this breaks between gcc-4.1.2-33, and
gcc-4.1.2-36
I think you misunderstood. This problem occurs in gcc 4.3.0-0.4; not in
4.1.2-36.
I'd like to know more about this, too. Currently I'm not convinced it
isn't a gcc bug.
Can someone with gcc 4.3 installed try compiling a few brief C++
programs with g++?
For starters:
typedef void void_t;
int f(void_t) { return 0; }
int main() { f(); }
If that works, try this one:
extern "C" {
typedef void void_t;
int f(void_t) { return 0; }
}
int main() { f(); }
And finally:
typedef void void_t;
extern "C" {
int f(void_t) { return 0; }
}
int main() { f(); }
If any of these fails, I'd sure like to know why. If they succeed, I'd
sure like to know what's special about GLvoid.
--
Braden McDaniel e-mail: <braden(a)endoframe.com>
<
http://endoframe.com> Jabber: <braden(a)jabber.org>