Есть ли стандартный макрос для вычисление компилятора программы на С?

Хочу исполнить раздельную компиляцию через использование условных директив.

Например, если используется компилятор Visual Studio (по-моему Intel), то выполняется следующий код, иначе, если компилятор gcc, то другой код.

Саму реализацию я знаю. Мне важно узнать какой макрос используется для определения компилятора Visual Studio. На просторах интернета я нашел макрос __ MINGW32 __, но он (компилятор) не используется в VS.


Ответы (1 шт):

Автор решения: Arenoros

Нет, у каждого компилятора есть свой макрос да ещё может меняться от версии к версии, можно конечно под каждый необходимый вручную их узнать, но есть более проверенный способ https://github.com/boostorg/predef/blob/develop/doc/predef.adoc

Пример

#include <boost/predef.h>
#include <iostream>

#if BOOST_COMP_GNUC
  #if BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4,0,0)
    const char * the_compiler = "GNU GCC, of at least version 4."
  #else
    const char * the_compiler = "GNU GCC, less than version 4."
  #endif
#else
  const char * the_compiler = "Not GNU GCC."
#endif

int main()
{
  std::cout << the_compiler << std::endl;
  return 0;
}
→ Ссылка