On 2/23/2011 8:27 AM, Prentice Bisbal wrote:
Jeff Squyres wrote:
On Feb 23, 2011, at 9:48 AM, Tim Prince wrote:
I agree with your logic, but the problem is where the code containing
the error is coming from - it's comping from a header files that's a
part of Open MPI, which makes me think this is a cmpiler error, since
I'm sure there are plenty of people using the same header file. in their
code.
Are you certain that they all find it necessary to re-define identifiers from
that header file, rather than picking parameter names which don't conflict?
Without seeing the code, it sounds like Tim might be right: someone is trying
to re-define the MPI_STATUS_SIZE parameter that is being defined by OMPI's
mpif-config.h header file. Regardless of include file/initialization ordering
(i.e., regardless of whether mpif-config.h is the first or Nth entity to try to
set this parameter), user code should never set this parameter value.
Or any symbol that begins with MPI_, for that matter. The entire "MPI_"
namespace is reserved for MPI.
I understand that, and I checked the code to make sure the programmer
didn't do anything stupid like that.
The entire code is only a few hundred lines in two different files. In
the entire program, there is only 1 include statement:
include 'mpif.h'
and MPI_STATUS_SIZE appears only once:
integer ierr,istatus(MPI_STATUS_SIZE)
I have limited knowledge of Fortran programming, but based on this, I
don't see how MPI_STATUS_SIZE could be getting overwritten.
Earlier, you showed a preceding PARAMETER declaration setting a new
value for that name, which would be required to make use of it in this
context. Apparently, you intend to support only compilers which violate
the Fortran standard by supporting a separate name space for PARAMETER
identifiers, so that you can violate the MPI standard by using MPI_
identifiers in a manner which I believe is called shadowing in C.
--
Tim Prince