Kokkos and Windows.h#

When using Kokkos on Windows a program or library might include windows.h. This is problematic as this header defines two macros with the names min and max unless NOMINMAX is defined previously. The preprocessor replaces strings in the source code with the macros yielding an uninterpretable result and thus compilation fails. Therefore, the header Kokkos_Core.hpp is protected against these macros, meaning they are undefined at the beginning and redefined at the end of the header file. Even though definitions inside Kokkos_Core.hpp are protected against the macros, code outside is not. Thus, it is on the user to deal with the macros being defined, either by defining -DNOMINMAX or /DNOMINMAX in the compile line (preferred) or by putting () around names that contain min or max.