corecrt_math.h Math Header Shipped with Windows* SDK 10.0.15063 is Not Compatible with Intel® C++ Compiler 18.0 and Earlier

By Anoop Madhusoodhanan Prabha, Published: 12/15/2017, Last Updated: 12/14/2017

Environment: Windows* SDK 10.0.15063

Affected products: Intel® C++ Compiler 18.0 and previous versions.

Problem Description :

This guard macro is defined inside Intel mathimf.h to make sure Microsoft's math header is not included as shown below:

#if defined(_WIN32) || defined(_WIN64)
# if defined(_INC_MATH)
#  error "<mathimf.h> is incompatible with system <math.h>!"
# else
#  define _INC_MATH /* Prevent possible inclusion of MS <math.h> below */
#  define __MATH_H_INCLUDED /* Prevent possible inclusion of Intel <math.h> below */
#  define __COMPLEX_H_INCLUDED /* Prevent possible inclusion of Intel <complex.h> below */
# endif
#endif

In versions of Windows SDK prior to 10.0.15063.0, the math header from Microsoft had the following guard macro:

#ifndef _INC_MATH
#define _INC_MATH

But with Windows SDK 10.0.15063.0 and above, the guard macro is taken away (please check corecrt_math.h shipped with Microsoft Compiler):

#pragma once
#define _INC_MATH

Test Program to reproduce the issue:

#include<mathimf.h>
#include<memory>

Compilation error message:

Intel(R) C++ Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.4.246 Build 20160811
Copyright (C) 1985-2016 Intel Corporation.  All rights reserved.

testissue.cpp
C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(24): error: invalid redeclaration of type name "____exception" (declared at line 1305 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
      struct _exception
             ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(89): warning #47: incompatible redefinition of macro "INFINITY" (declared at line 152 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define INFINITY   ((float)(_HUGE_ENUF * _HUGE_ENUF))
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(90): warning #47: incompatible redefinition of macro "HUGE_VAL" (declared at line 150 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define HUGE_VAL   ((double)INFINITY)
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(91): warning #47: incompatible redefinition of macro "HUGE_VALF" (declared at line 146 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define HUGE_VALF  ((float)INFINITY)
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(92): warning #47: incompatible redefinition of macro "HUGE_VALL" (declared at line 148 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define HUGE_VALL  ((long double)INFINITY)
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(93): warning #47: incompatible redefinition of macro "NAN" (declared at line 141 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define NAN        ((float)(INFINITY * 0.0F))
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(100): warning #47: incompatible redefinition of macro "FP_INFINITE" (declared at line 220 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define FP_INFINITE  _INFCODE
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(101): warning #47: incompatible redefinition of macro "FP_NAN" (declared at line 219 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define FP_NAN       _NANCODE
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(102): warning #47: incompatible redefinition of macro "FP_NORMAL" (declared at line 223 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define FP_NORMAL    _FINITE
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(103): warning #47: incompatible redefinition of macro "FP_SUBNORMAL" (declared at line 222 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define FP_SUBNORMAL _DENORM
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(104): warning #47: incompatible redefinition of macro "FP_ZERO" (declared at line 221 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define FP_ZERO      0
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(107): warning #47: incompatible redefinition of macro "FP_ILOGB0" (declared at line 131 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define FP_ILOGB0   (-0x7fffffff - _C2)
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(108): warning #47: incompatible redefinition of macro "FP_ILOGBNAN" (declared at line 132 of "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.4.246\windows\compiler\include\mathimf.h")
  #define FP_ILOGBNAN 0x7fffffff
          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(289): error: expected an identifier
      _Check_return_ inline int fpclassify(_In_ float _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(289): error: expected a ")"
      _Check_return_ inline int fpclassify(_In_ float _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(289): error: expected a ")"
      _Check_return_ inline int fpclassify(_In_ float _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(289): error: expected a "{"
      _Check_return_ inline int fpclassify(_In_ float _X) throw()
                                                          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(294): error: expected an identifier
      _Check_return_ inline int fpclassify(_In_ double _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(294): error: expected a ")"
      _Check_return_ inline int fpclassify(_In_ double _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(294): error: expected a ")"
      _Check_return_ inline int fpclassify(_In_ double _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(294): error: expected a "{"
      _Check_return_ inline int fpclassify(_In_ double _X) throw()
                                                           ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(299): error: expected an identifier
      _Check_return_ inline int fpclassify(_In_ long double _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(299): error: expected a ")"
      _Check_return_ inline int fpclassify(_In_ long double _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(299): error: expected a ")"
      _Check_return_ inline int fpclassify(_In_ long double _X) throw()
                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(299): error: expected a "{"
      _Check_return_ inline int fpclassify(_In_ long double _X) throw()
                                                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(304): error: expected an identifier
      _Check_return_ inline bool signbit(_In_ float _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(304): error: expected a ")"
      _Check_return_ inline bool signbit(_In_ float _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(304): error: expected a ")"
      _Check_return_ inline bool signbit(_In_ float _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(304): error: expected a "{"
      _Check_return_ inline bool signbit(_In_ float _X) throw()
                                                        ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(309): error: expected an identifier
      _Check_return_ inline bool signbit(_In_ double _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(309): error: expected a ")"
      _Check_return_ inline bool signbit(_In_ double _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(309): error: expected a ")"
      _Check_return_ inline bool signbit(_In_ double _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(309): error: expected a "{"
      _Check_return_ inline bool signbit(_In_ double _X) throw()
                                                         ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(314): error: expected an identifier
      _Check_return_ inline bool signbit(_In_ long double _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(314): error: expected a ")"
      _Check_return_ inline bool signbit(_In_ long double _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(314): error: expected a ")"
      _Check_return_ inline bool signbit(_In_ long double _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(314): error: expected a "{"
      _Check_return_ inline bool signbit(_In_ long double _X) throw()
                                                              ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(400): error: expected an identifier
      _Check_return_ inline bool isfinite(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(400): error: expected a ")"
      _Check_return_ inline bool isfinite(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(406): error: expected an identifier
      _Check_return_ inline bool isinf(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(406): error: expected a ")"
      _Check_return_ inline bool isinf(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(412): error: expected an identifier
      _Check_return_ inline bool isnan(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(412): error: expected a ")"
      _Check_return_ inline bool isnan(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(418): error: expected an identifier
      _Check_return_ inline bool isnormal(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(418): error: expected a ")"
      _Check_return_ inline bool isnormal(_In_ _Ty _X) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(424): error: expected an identifier
      _Check_return_ inline bool isgreater(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(424): error: expected a ")"
      _Check_return_ inline bool isgreater(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(430): error: expected an identifier
      _Check_return_ inline bool isgreaterequal(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(430): error: expected a ")"
      _Check_return_ inline bool isgreaterequal(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(436): error: expected an identifier
      _Check_return_ inline bool isless(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(436): error: expected a ")"
      _Check_return_ inline bool isless(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(442): error: expected an identifier
      _Check_return_ inline bool islessequal(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(442): error: expected a ")"
      _Check_return_ inline bool islessequal(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(448): error: expected an identifier
      _Check_return_ inline bool islessgreater(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(448): error: expected a ")"
      _Check_return_ inline bool islessgreater(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(454): error: expected an identifier
      _Check_return_ inline bool isunordered(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(454): error: expected a ")"
      _Check_return_ inline bool isunordered(_In_ _Ty1 _X, _In_ _Ty2 _Y) throw()
                                 ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(572): error: more than one instance of overloaded function "__libm_nexttoward64f" has "C" linkage
      _Check_return_ _ACRTIMP float     __cdecl nexttowardf(_In_ float _X, _In_ long double _Y);
                                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(774): error: more than one instance of overloaded function "acosh" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl acoshl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(776): error: more than one instance of overloaded function "acos" has "C" linkage
      _Check_return_ __inline long double __CRTDECL acosl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(781): error: more than one instance of overloaded function "asinh" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl asinhl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(783): error: more than one instance of overloaded function "asin" has "C" linkage
      _Check_return_ __inline long double __CRTDECL asinl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(788): error: more than one instance of overloaded function "atan2" has "C" linkage
      _Check_return_ __inline long double __CRTDECL atan2l(_In_ long double _Y, _In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(793): error: more than one instance of overloaded function "atanh" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl atanhl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(795): error: more than one instance of overloaded function "atan" has "C" linkage
      _Check_return_ __inline long double __CRTDECL atanl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(800): error: more than one instance of overloaded function "cbrt" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl cbrtl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(802): error: more than one instance of overloaded function "ceil" has "C" linkage
      _Check_return_ __inline long double __CRTDECL ceill(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(812): error: more than one instance of overloaded function "copysign" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl copysignl(_In_ long double _Number, _In_ long double _Sign);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(819): error: more than one instance of overloaded function "cosh" has "C" linkage
      _Check_return_ __inline long double __CRTDECL coshl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(824): error: more than one instance of overloaded function "cos" has "C" linkage
      _Check_return_ __inline long double __CRTDECL cosl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(829): error: more than one instance of overloaded function "erf" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl erfl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(830): error: more than one instance of overloaded function "erfc" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl erfcl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(832): error: more than one instance of overloaded function "exp" has "C" linkage
      _Check_return_ __inline long double __CRTDECL expl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(837): error: more than one instance of overloaded function "exp2" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl exp2l(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(838): error: more than one instance of overloaded function "expm1" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl expm1l(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(845): error: more than one instance of overloaded function "fdim" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl fdiml(_In_ long double _X, _In_ long double _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(847): error: more than one instance of overloaded function "floor" has "C" linkage
      _Check_return_ __inline long double __CRTDECL floorl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(852): error: more than one instance of overloaded function "fma" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl fmal(_In_ long double _X, _In_ long double _Y, _In_ long double _Z);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(853): error: more than one instance of overloaded function "fmax" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl fmaxl(_In_ long double _X, _In_ long double _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(854): error: more than one instance of overloaded function "fmin" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl fminl(_In_ long double _X, _In_ long double _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(856): error: more than one instance of overloaded function "fmod" has "C" linkage
      _Check_return_ __inline long double __CRTDECL fmodl(_In_ long double _X, _In_ long double _Y)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(861): error: more than one instance of overloaded function "frexp" has "C" linkage
      _Check_return_ __inline long double __CRTDECL frexpl(_In_ long double _X, _Out_ int *_Y)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(866): error: more than one instance of overloaded function "ilogb" has "C" linkage
      _Check_return_ _ACRTIMP int __cdecl ilogbl(_In_ long double _X);
                                          ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(873): error: more than one instance of overloaded function "hypot" has "C" linkage
      _Check_return_ __inline long double __CRTDECL hypotl(_In_ long double _X, _In_ long double _Y)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(878): error: more than one instance of overloaded function "ldexp" has "C" linkage
      _Check_return_ __inline long double __CRTDECL ldexpl(_In_ long double _X, _In_ int _Y)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(883): error: more than one instance of overloaded function "lgamma" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl lgammal(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(884): error: more than one instance of overloaded function "llrint" has "C" linkage
      _Check_return_ _ACRTIMP long long __cdecl llrintl(_In_ long double _X);
                                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(885): error: more than one instance of overloaded function "llround" has "C" linkage
      _Check_return_ _ACRTIMP long long __cdecl llroundl(_In_ long double _X);
                                                ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(887): error: more than one instance of overloaded function "log" has "C" linkage
      _Check_return_ __inline long double __CRTDECL logl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(892): error: more than one instance of overloaded function "log10" has "C" linkage
      _Check_return_ __inline long double __CRTDECL log10l(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(897): error: more than one instance of overloaded function "log1p" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl log1pl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(898): error: more than one instance of overloaded function "log2" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl log2l(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(899): error: more than one instance of overloaded function "logb" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl logbl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(900): error: more than one instance of overloaded function "lrint" has "C" linkage
      _Check_return_ _ACRTIMP long __cdecl lrintl(_In_ long double _X);
                                           ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(901): error: more than one instance of overloaded function "lround" has "C" linkage
      _Check_return_ _ACRTIMP long __cdecl lroundl(_In_ long double _X);
                                           ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(903): error: more than one instance of overloaded function "modf" has "C" linkage
      _Check_return_ __inline long double __CRTDECL modfl(_In_ long double _X, _Out_ long double* _Y)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(912): error: more than one instance of overloaded function "nearbyint" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl nearbyintl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(913): error: more than one instance of overloaded function "nextafter" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl nextafterl(_In_ long double _X, _In_ long double _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(914): error: more than one instance of overloaded function "__libm_nexttoward64l" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl nexttowardl(_In_ long double _X, _In_ long double _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(916): error: more than one instance of overloaded function "pow" has "C" linkage
      _Check_return_ __inline long double __CRTDECL powl(_In_ long double _X, _In_ long double _Y)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(921): error: more than one instance of overloaded function "remainder" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl remainderl(_In_ long double _X, _In_ long double _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(922): error: more than one instance of overloaded function "remquo" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl remquol(_In_ long double _X, _In_ long double _Y, _Out_ int* _Z);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(923): error: more than one instance of overloaded function "rint" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl rintl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(924): error: more than one instance of overloaded function "round" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl roundl(_In_ long double _X);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(925): error: more than one instance of overloaded function "scalbln" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl scalblnl(_In_ long double _X, _In_ long _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(926): error: more than one instance of overloaded function "scalbn" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl scalbnl(_In_ long double _X, _In_ int _Y);
                                                  ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(928): error: more than one instance of overloaded function "sinh" has "C" linkage
      _Check_return_ __inline long double __CRTDECL sinhl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(933): error: more than one instance of overloaded function "sin" has "C" linkage
      _Check_return_ __inline long double __CRTDECL sinl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(938): error: more than one instance of overloaded function "sqrt" has "C" linkage
      _Check_return_ __inline long double __CRTDECL sqrtl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(943): error: more than one instance of overloaded function "tanh" has "C" linkage
      _Check_return_ __inline long double __CRTDECL tanhl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(948): error: more than one instance of overloaded function "tan" has "C" linkage
      _Check_return_ __inline long double __CRTDECL tanl(_In_ long double _X)
                                                    ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\ucrt\corecrt_math.h(953): error: more than one instance of overloaded function "tgamma" has "C" linkage
      _Check_return_ _ACRTIMP long double __cdecl tgammal(_In_ long double _X);
                                                  ^

compilation aborted for testissue.cpp (code 4)

Resolution:

This issue is resolved in Intel(R) C++ Compiler 18.0 Update 1.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804