TransWikia.com

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

Stack Overflow на русском Asked on December 14, 2020

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

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

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

One Answer

Нет, у каждого компилятора есть свой макрос да ещё может меняться от версии к версии, можно конечно под каждый необходимый вручную их узнать, но есть более проверенный способ 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;
}

Answered by Arenoros on December 14, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP