Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7956 Discussions

#define MYPLATFORM(name) MYDEF_##name()

Ivan_Kiselev
Beginner
671 Views
This code doesn't compiled by Intel's C++ Compiler 11:
#define MYPLATFORM(name) MYDEF_##name()
#if !MYPLATFORM(x86_MMXEXT) && !MYPLATFORM(x86_SSE)
...
Compiler will generate an error:
error : function call is not allowed in a constant expression
0 Kudos
1 Reply
Andreas_Klaedtke
Beginner
671 Views
The actual problem does not seem to be the compiler, but the pre-processor.
It should depend on the definition of MYDEF_x86_MMXEXT and MYDEF_x86_SSE.
If they are macros that do not expect a parameter, eg:
[cpp]#define MYDEF_x86_MMXEXT() x[/cpp]
It should work and version 11.1 of icpc compiles the code.
0 Kudos
Reply