← Back to team overview

dolfin team mailing list archive

Re: make demo

 

When I think of it, people may use other compilers than gcc, so I just
added a note in the README file that version 3.4 or more recent may be
needed when compiling with gcc.

I'll hold off with the new release until this afternoon (Chicago
time) if I haven't heard any objections by then.

/Anders


On Fri, Mar 24, 2006 at 08:17:28AM -0600, Anders Logg wrote:
> ok, maybe we should put in a test in configure for a recent version of
> gcc?
> 
> Anyone knows of a suitable macro to use in configure.in to check for
> gcc >= 3.4?
> 
> /Anders
> 
> 
> On Fri, Mar 24, 2006 at 02:53:39PM +0100, Garth N. Wells wrote:
> > I can't give a definitive answer on whether or not anonymous classes are
> > part of ISO C++, but it does seem that this is a gcc 3.3 bug which has
> > been fixed in gcc >= 3.4 (http://gcc.gnu.org/gcc-3.4/changes.html).
> > 
> > I don't think that it's unreasonable that DOLFIN require gcc >= 3.4, so
> > we can keeps things as they are.
> > 
> > Garth
> > 
> > 
> > On Thu, 2006-03-23 at 13:46 -0600, Anders Logg wrote:
> > > It depends on how old the compilers are that can't handle it...
> > > 
> > > But if it's not in the standard then we should avoid it. Do you know
> > > if anonymous classes are allowed in ISO C++?
> > > 
> > > /Anders
> > > 
> > > 
> > > On Thu, Mar 23, 2006 at 08:10:48PM +0100, Nguyen Tien Dung wrote:
> > > 
> > > > By changing to standard definitions like that, it works. Do you think we 
> > > > should keep ISO forms when writing new versions, so that both old and new 
> > > > compilers can be used?
> > > > 
> > > > 
> > > > Quoting Anders Logg <logg@xxxxxxxxx>:
> > > > 
> > > > > My interpretation is that your gcc complains the about use of
> > > > > anonymous classes:
> > > > > 
> > > > > Does it help if you change in the three places in
> > > > > src/demo/pde/convection-diffusion/main.cpp where this is used?
> > > > > 
> > > > > Change from
> > > > > 
> > > > >     class : public Function
> > > > >     {
> > > > >         ...
> > > > >     } f;
> > > > > 
> > > > > to
> > > > > 
> > > > >     class MyFunction : public Function
> > > > >     {
> > > > >         ...
> > > > >     };
> > > > > 
> > > > >     MyFunction f;
> > > > > 
> > > > > and similarly for the two BoundaryConditions.
> > > > > 
> > > > > Does anyone know if 'class : public Foo { } foo;' is not allowed in
> > > > > ANSI C++? I thought it was ok.
> > > > > 
> > > > > /Anders
> > > > > 
> > > > > On Thu, Mar 23, 2006 at 06:54:35PM +0100, Nguyen Tien Dung wrote:
> > > > > > Dear all,
> > > > > > 
> > > > > > With gcc version 3.3.4, when I put the command: make demo from the
> > > > > top-level
> > > > > > directory of dolfin 0.6.0, I get the following errors:
> > > > > > 
> > > > > > 
> > > > > > main.cpp: In function `void solveConvectionDiffusion(dolfin::Mesh&,
> > > > > >    dolfin::Function&)':
> > > > > > main.cpp:22: error: parse error before `:' token
> > > > > > main.cpp: At global scope:
> > > > > > main.cpp:31: error: ISO C++ forbids declaration of `bc' with no type
> > > > > > main.cpp:34: error: parse error before `:' token
> > > > > > main.cpp:40: error: ISO C++ forbids declaration of `f' with no type
> > > > > > main.cpp:50: error: `mesh' was not declared in this scope
> > > > > > main.cpp:53: error: `velocity' was not declared in this scope
> > > > > > main.cpp:54: error: `velocity' was not declared in this scope
> > > > > > main.cpp:57: error: `mesh' was not declared in this scope
> > > > > > main.cpp:57: error: ISO C++ forbids declaration of `assemble' with no type
> > > > > > main.cpp:57: error: `int dolfin::FEM::assemble' is not a static member of
> > > > > `
> > > > > >    class dolfin::FEM'
> > > > > > main.cpp:57: error: initializer list being treated as compound expression
> > > > > > main.cpp:69: error: parse error before `while'
> > > > > > main.cpp:73: error: `mesh' was not declared in this scope
> > > > > > main.cpp:73: error: ISO C++ forbids declaration of `applyBC' with no type
> > > > > > main.cpp:73: error: `int dolfin::FEM::applyBC' is not a static member of
> > > > > `class
> > > > > >    dolfin::FEM'
> > > > > > main.cpp:73: error: initializer list being treated as compound expression
> > > > > > main.cpp:76: error: syntax error before `.' token
> > > > > > main.cpp:79: error: syntax error before `<<' token
> > > > > > main.cpp:82: error: ISO C++ forbids declaration of `p' with no type
> > > > > > main.cpp:82: error: conflicting types for `int p'
> > > > > > main.cpp:68: error: previous declaration as `dolfin::Progress p'
> > > > > > main.cpp:85: error: syntax error before `+=' token
> > > > > > main.cpp:86: error: ISO C++ forbids declaration of `U0' with no type
> > > > > > main.cpp:86: error: conflicting types for `int U0'
> > > > > > main.cpp:49: error: previous declaration as `dolfin::Function U0'
> > > > > > main.cpp:87: error: parse error before `}' token
> > > > > > main.cpp: In function `int main()':
> > > > > > main.cpp:93: error: parse error before `:' token
> > > > > > main.cpp:101: error: return-statement with no value, in function declared
> > > > > with
> > > > > >    a non-void return type
> > > > > > main.cpp: At global scope:
> > > > > > main.cpp:105: error: parse error before `if'
> > > > > > main.cpp:118: error: ISO C++ forbids declaration of `bc' with no type
> > > > > > main.cpp:118: error: redefinition of `int bc'
> > > > > > main.cpp:31: error: `int bc' previously declared here
> > > > > > main.cpp:122: error: conflicting types for `dolfin::Function f'
> > > > > > main.cpp:40: error: previous declaration as `int f'
> > > > > > main.cpp:123: error: conflicting types for `dolfin::Stokes::BilinearForm
> > > > > a'
> > > > > > main.cpp:53: error: previous declaration as `
> > > > > >    dolfin::ConvectionDiffusion::BilinearForm a'
> > > > > > main.cpp:124: error: conflicting types for `dolfin::Stokes::LinearForm L'
> > > > > > main.cpp:54: error: previous declaration as `
> > > > > >    dolfin::ConvectionDiffusion::LinearForm L'
> > > > > > main.cpp:125: error: invalid conversion from `int' to `dolfin::PDE::Type'
> > > > > > main.cpp:125: error:   initializing argument 4 of `
> > > > > >    dolfin::PDE::PDE(dolfin::BilinearForm&, dolfin::LinearForm&,
> > > > > dolfin::Mesh&,
> > > > > >    dolfin::PDE::Type)'
> > > > > > main.cpp:130: error: syntax error before `.' token
> > > > > > main.cpp:135: error: syntax error before `<<' token
> > > > > > main.cpp:136: error: syntax error before `<<' token
> > > > > > main.cpp:139: error: ISO C++ forbids declaration of
> > > > > `solveConvectionDiffusion'
> > > > > >    with no type
> > > > > > main.cpp:139: error: `int solveConvectionDiffusion' redeclared as
> > > > > different
> > > > > >    kind of symbol
> > > > > > main.cpp:20: error: previous declaration of `void
> > > > > >    solveConvectionDiffusion(dolfin::Mesh&, dolfin::Function&)'
> > > > > > main.cpp:139: error: initializer list being treated as compound expression
> > > > > > main.cpp:139: error: cannot convert `dolfin::Function' to `int' in
> > > > > >    initialization
> > > > > > main.cpp:140: error: parse error before `}' token
> > > > > > main.cpp:124: confused by earlier errors, bailing out
> > > > > > 
> > > > > > 
> > > > > > N.T.Dung
> > > > > > 
> > > > > 
> > > > 
> > > > 
> > > 
> 

-- 
Anders Logg
Research Assistant Professor
Toyota Technological Institute at Chicago
http://www.tti-c.org/logg/



Follow ups

References