On Aug 6, 2012, at 10:35 AM, PattiMichelle wrote:

> /usr/local/openmpi_16/include/mpi.h:1083:25: error: expected identifier or 
> ‘(’ before ‘int’
> /usr/local/openmpi_16/include/mpi.h:1097:25: error: ‘MPI_Comm’ redeclared as 
> different kind of symbol
> /usr/local/openmpi_16/include/mpi.h:319:37: note: previous declaration of 
> ‘MPI_Comm’ was here

+1 on what Tim said.

Additionally, what version of Open MPI is this (1.6?), and where did you get it 
from?

I ask because these are very strange lines to get errors on in mpi.h.  In my 
copy of OMPI 1.6, mpi.h:1081-4 is:

-----
1081: OMPI_DECLSPEC  int MPI_Comm_accept(char *port_name, MPI_Info info, int 
root,
1082:                                    MPI_Comm comm, MPI_Comm *newcomm);
1083: OMPI_DECLSPEC  MPI_Fint MPI_Comm_c2f(MPI_Comm comm);
1084: OMPI_DECLSPEC  int MPI_Comm_call_errhandler(MPI_Comm comm, int errorcode);
-----

MPI_Fint on 1083 should likely resolve to "int", and OMPI_DELCSPEC will resolve 
to be nothing or an __attribute__ directive.  But OMPI_DECLSPEC has already 
been used a bajillion times already in mpi.h, so that can't be the error.  I 
don't see any other error before MPI_Fint.

Similarly, line 1097 also uses MPI_Fint.

Is something else defining the value of MPI_Fint before you include mpi.h, 
perchance?

I ask because I notice that we define MPI_Fint thusly:

-----
#ifndef MPI_Fint
/* MPI_Fint is the same as ompi_fortran_INTEGER_t */
#define MPI_Fint ompi_fortran_integer_t
#endif
-----

Meaning that if someone else has defined MPI_Fint before us, we'll keep that 
definition.  Which actually seems like a bad idea, but even so, no one else 
should be defining what MPI_Fint is.

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to