[Mpi-forum] Compile problems with examples in MPI Standard
John DelSignore
John.DelSignore at roguewave.com
Tue Jul 24 10:17:33 CDT 2012
In C and C++, the type of "char *argv[]" as a parameter is equivalent to the type of "char **argv", because you can't pass an array as an argument. Therefore, as written in the example, the type of argv is "a pointer to a pointer to a char".
I don't know what the type signature of MPI_Init() is in your implementation, but it's possible that a "const" got tossed in there somewhere, for example: int MPI_Init(int *, const char ***);
Here's a simple test:
cap:/nfs/san0/user/home/jdelsign>cat xxx.c
void bar( char ***p) {}
void foo(const char ***p) {}
main(int argc, char *argv[])
{
bar(&argv);
foo(&argv);
}
cap:/nfs/san0/user/home/jdelsign>gcc --version | head -1
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)
cap:/nfs/san0/user/home/jdelsign>gcc xxx.c
xxx.c: In function 'main':
xxx.c:6: warning: passing argument 1 of 'foo' from incompatible pointer type
cap:/nfs/san0/user/home/jdelsign>
Hope this helps.
Cheers, John D.
William Gropp wrote:
> I've run my code checker over the examples in the MPI-3 Standard, and I've found some issues. Perhaps the biggest is this (a typical example):
>
> Opening file one-side-2.tex
> ex5501.c: In function ‘main’:
> ex5501.c:58: warning: passing argument 2 of ‘MPI_Init’ from incompatible pointer type
>
> This occurs everywhere we include MPI_Init in an example. The compiler is gcc 4.2.1 . The corresponding
> declaration of argv is as intended:
>
> int main(int argc, char *argv[])
>
> The declaration in MPI_Init looks correct (argv is a pointer to an array of pointers to char). Is this a place where we should stick with the *** notation just to keep compilers happy? Or is there something I'm missing in the declaration?
>
> There are a number of other errors as well. Three examples in the new tools chapter don't compile. There are a number of problems in the datatype chapter, most minor.
>
> I can fix the obvious ones or leave them to the chapter authors. Let me know what is preferred.
>
> I can't check the Fortran 08 examples because I only have gfortran :(
>
> Bill
>
> William Gropp
> Director, Parallel Computing Institute
> Deputy Director for Research
> Institute for Advanced Computing Applications and Technologies
> Paul and Cynthia Saylor Professor of Computer Science
> University of Illinois Urbana-Champaign
>
>
>
>
> _______________________________________________
> mpi-forum mailing list
> mpi-forum at lists.mpi-forum.org
> http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum
>
More information about the mpi-forum
mailing list