[comp.windows.x] X & C++

rune.johansen%odin.re.nta.uninett@NAC.NO (Rune Henning Johansen) (06/13/90)

In a C++-program I have this line:

  #include <X11/Intrinsic.h>

How can I avoid:

  /usr/include/X11/Intrinsic.h:102: parse error before `char'

or

  "/usr/include/X11/Intrinsic.h", line 102: error: syntax error: * char
  "/usr/include/X11/Intrinsic.h", line 102: error: syntax error

-Rune.

pattersw@cs.rpi.edu (William Patterson) (07/20/90)

I recieved several replies to my first posting, but none that really
solved the problem (compiling X & athena widgets with g++).  Most of
the responses started "Well, without more details I can't tell for
sure..."

So, in hopes that more details will aid some kind person in finding
where I'm going wrong, here are the details...


------------ The Compile Command --------------------
    g++  junk.c \
	-fwritable-strings -fstrength-reduce -felide-constructors \
	-fschedule-insns -fdelayed-branch -fsave-memoized \
	 -lXaw -lXmu -lXt -lXext -lX11	

 Note : I get the same errors using -ansi or -traditional in place of
  all the -f... flags (which I don't understand but which were
  suggested by somone via e-mail)

---------------- Errors Porduced ---------------------
In file included from /usr/local/gnu/lib/g++-include/sys/time.h:3, from /usr/include/X11/Xos.h:121, from /usr/include/X11/Intrinsic.h:36, from junk.c:2:
/usr/local/gnu/lib/g++-include/time.h:60: warning: type declaration of timezone shadowed
In file included from junk.c:2:
/usr/include/X11/Intrinsic.h:102: parse error before `char'
junk.c:6: parse error before `fallback_resources'
junk.c:6: warning: initialization of integer from pointer lacks a cast
junk.c:6: warning: data definition lacks type or storage class
junk.c:12: `argc' undeclared, outside of functions
junk.c:12: `argv' undeclared, outside of functions
junk.c:13: parse error before `int'
junk.c:15: parse error before `{'
junk.c:20: conflicting types for `toplevel'
junk.c:21: warning: initialization of integer from pointer lacks a cast
junk.c:21: warning: data definition lacks type or storage class
junk.c:23: parse error before `void'
junk.c:25: warning: data definition lacks type or storage class
junk.c:26: warning: data definition lacks type or storage class
junk.c:27: parse error before `}'

Compilation finished at Fri Jul 20 00:10:00


--------------- The Program ---------------------
#include <stdio.h>
#include <X11/Intrinsic.h>	
#include <X11/Xaw/Label.h>	
#include <X11/Xaw/Cardinals.h>	

String fallback_resources[] = { "*Label.Label:    This is xlabel", NULL };
 
static XrmOptionDescRec options[] = {
{"-label",	"*Label.label",	XrmoptionSepArg,	NULL}
};

main(argc, argv)
int argc;
char **argv;
{
    static void Syntax();
    XtAppContext app_con;
    Widget toplevel;

    toplevel = XtAppInitialize(&app_con, "Xlabel", options, XtNumber(options),
			       &argc, argv, fallback_resources, NULL, ZERO);

    (void) XtCreateManagedWidget("label", labelWidgetClass, toplevel, 
				 NULL, ZERO);
    XtRealizeWidget(toplevel);
    XtAppMainLoop(app_con);
}

-------------------- END -----------------------------
-- 

-----------------------------------
Bill Patterson
pattersw@turing.cs.rpi.edu

Computer Science Department
Rensselaer Polytechnic Institute
Troy, NY.
-----------------------------------

swick@ATHENA.MIT.EDU (Ralph R. Swick) (07/20/90)

    In file included from junk.c:2:
    /usr/include/X11/Intrinsic.h:102: parse error before `char'

You need to install fixes 10 and 11 (and any preceeding ones
you may be missing).

brock@SUMEX-AIM.STANFORD.EDU (Kevin Brock) (07/20/90)

The problem was with the program, not the compile-line.  I've included the
modified version below; it will compile and run on a SPARC Station 1 running
Sun OS 4.0.3c using GNU's g++ and X11R4.

The compile line was:

g++ junk.c -lXaw -lXmu -lXt -lXext -lX11


You might want to think about either using the extern "C" {} declaration for
the X headers or making sure that they're all modified to be C++ compatible.

----------------------------  junk.c -------------------------------------

#include <stdio.h>
#include <X11/Intrinsic.h>    
#include <X11/Xaw/Label.h>    
#include <X11/Xaw/Cardinals.h>    

String fallback_resources[] = { "*Label.Label:    This is xlabel", NULL };
 
static XrmOptionDescRec options[] = {
{"-label",    "*Label.label",    XrmoptionSepArg,    NULL}
};

main(int argc, char** argv)
{
    static void Syntax();
    XtAppContext app_con;
    Widget toplevel;

    toplevel = XtAppInitialize(&app_con, "Xlabel", options, XtNumber(options),
                   &argc, argv, fallback_resources, NULL, ZERO);

    (void) XtCreateManagedWidget("label", labelWidgetClass, toplevel, 
                 NULL, ZERO);
    XtRealizeWidget(toplevel);
    XtAppMainLoop(app_con);
}

---------------------------

Kevin Brock
brock@sumex-aim.stanford.edu

-------