Hello OMPI_Developers,

When I compile my C++ code with Open MPI version 4.0.3 or 4.0.4 (I think
that 4.0.2 and 4.0.1 would have the same problem), I get many of warnings
like (1 per source file):

/work/software/x86_64/openmpi-4.0.4/include/mpi.h:316:16: warning:
"__STDC_VERSION__" is not defined, evaluates to 0 [-Wundef]


I use g++ 9.3.1 on Fedora 31 Linux with many warnings options enabled (like
-Wundef to report the use of undefined macros) but I have the same problem
on CentOS 7.6 with the system compiler.

This problem is caused by the fact that, starting with Open MPI version
4.0.1, mpi.h try to use the _Static_assert() macro defined by the C11
language to cleanly state that a given symbol is no longer available
because it was deprecated by the MPI 3.0 standard. To see if it is
available, it checks the __STDC_VERSION__ macro as follow (mpi.h, line 316):

#         elif (__STDC_VERSION__ >= 201112L)


This macro is not defined by the C++ standard (or at least g++ doesn't
define it) so it would be cleaner if it would be tested only if __cplusplus is
not defined. Also if __cplusplus is defined and >= 201103L (C++11), the
static_assert() keyword could be used instead of _Static_assert().

Thanks a lot for looking at how to fix this little annoyance.

Martin Audet

Reply via email to