[mercury-users] Strange C++ compilation problem

Ondrej Bojar oboj7042 at ss1000.ms.mff.cuni.cz
Thu Aug 22 23:39:21 AEST 2002


I try to compile a C++ code that depends on Mercury code as well.
The core dependencies of files are:

goal: db_cint.o

db_cint.o: db_cint.cc
db_cint.cc: db_cint.h
db_cint.h: db_mint.h seznam.h

# C++ code
seznam.o: seznam.cpp
seznam.cpp: seznam.h

# Mercury's part of the interface (db_*m*int)
db_mint.h: db_mint.o
db_mint.o: db_mint.m

The object seznam.o itself is just fine, it compiles with gcc without any

Problem arises, when I try to compile db_cint.o. This must be done with
mgnuc, due to the dependency on db_mint.h, which relies on mercury.h.
But mgnuc rejects the included seznam.h on my current machine. (It works
fine on another machine...)

Here is the mmake log, I hope all necessary version information is in it.

mgnuc --high-level-code     --c-debug --no-c-optimize -I ../milan -I
../../../src/ent/mikulas/simple/ -v    -I../../../src/shared/ -I.
-I../../../src/shared/comm/ -I../../../src/ent/mikulas/simple/ -g     -c
Reading specs from /usr/lib/gcc-lib/i386-slackware-linux/2.95.3/specs
gcc version 2.95.3 20010315 (release)
 /usr/lib/gcc-lib/i386-slackware-linux/2.95.3/cpp0 -lang-c++ -v -I/usr/local/mercury-rotd-2001-09-24/lib/mercury/inc -I ../milan -I ../../../src/ent/mikulas/simple/ -I../../../src/shared/ -I. -I../../../src/shared/comm/ -I../../../src/ent/mikulas/simple/ -I/usr/local/include -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -trigraphs -D__STRICT_ANSI__ -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -g -g -Wall -Wwrite-strings -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wno-unused -Wno-uninitialized -Acpu(i386) -Amachine(i386) -D__i386 -D__i386__ -DMR_HIGHLEVEL_CODE -DCONSERVATIVE_GC -DNO_SIGNALS db_cint.cc /tmp/cc3K5kdU.ii
GNU CPP version 2.95.3 20010315 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
 /usr/lib/gcc-lib/i386-slackware-linux/2.95.3/cc1plus /tmp/cc3K5kdU.ii -quiet -dumpbase db_cint.cc -g -g -Wall -Wwrite-strings -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Wno-unused -Wno-uninitialized -ansi -version -o /tmp/ccP8L00W.s
GNU C++ version 2.95.3 20010315 (release) (i386-slackware-linux) compiled by GNU C version 2.95.3 20010315 (release).
In file included from db_cint.h:29,
                 from db_cint.cc:2:
../milan/seznam.h:49: ANSI C++ forbids declaration `CHandlSeznam' with no type
../milan/seznam.h:49: ANSI C++ forbids data member `CHandlSeznam' with same name as enclosing class
../milan/seznam.h:49: declaration of `const int CHandlSeznam::CHandlSeznam'
../milan/seznam.h:47: conflicts with previous declaration `void CHandlSeznam::CHandlSeznam(int)'
../milan/seznam.h:49: parse error before `&'
../milan/seznam.h:123: invalid use of undefined type `class CHandlSeznam'
../milan/seznam.h:42: forward declaration of `class CHandlSeznam'
../milan/seznam.h:123: `SezParam' was not declared in this scope
../milan/seznam.h:123: parse error before `)'
../milan/seznam.h:131: invalid use of undefined type `class CHandlSeznam'
../milan/seznam.h:42: forward declaration of `class CHandlSeznam'
../milan/seznam.h:131: `SezParam' was not declared in this scope
../milan/seznam.h:131: declaration of `int CHandlSeznam::kopie_seznamu'
../milan/seznam.h:123: conflicts with previous declaration `int CHandlSeznam::kopie_seznamu(...)'
In file included from db_cint.h:34,
                 from db_cint.cc:2:
../milan/veta.h:1092: confused by earlier errors, bailing out
gmake[1]: *** [db_cint.o] Error 1

I really don't know, what should I try (except for compiling a newer gcc,
right now I'm trying to compile 3.1.1).

Thanks in advance, Andrew.

P.S.: I attached some of the source codes, the problematic part of
seznam.h looks quite innocent:

class CHandlSeznam {

  CHandlSeznam();  ///implicitni konstruktor
  CHandlSeznam(const CHandlSeznam& NovySeznam);  ///kopirovaci konstruktor
  ~CHandlSeznam();  ///destruktor

------------vvvvvv  this is the line 49A
  const CHandlSeznam& operator=(const CHandlSeznam& NovySeznam);
  /* operator prirazeni */

  void pridej_na_zacatek(THandl NoveInfo); ///prida novy clen seznamu na
  void pridej_na_konec(THandl NoveInfo);  ///prida novy clen seznamu na

-------------- next part --------------
A non-text attachment was scrubbed...
Name: problem.tgz
Type: application/x-gzip
Size: 11766 bytes
URL: <http://lists.mercurylang.org/archives/users/attachments/20020822/e0d70437/attachment.bin>

More information about the users mailing list