intrin.h ошибка mingw: нет такого файла или каталога
Я знаю это #include<intrin.h>"
специфичен для Windows (и работает в MSVS), но выдает ошибку, когда я пытаюсь скомпилировать с помощью MINGW: fatal error: intrin.h: No such file or directory
Как мне решить эту проблему и заставить ее скомпилировать в MINGW?
К вашему сведению, это то, что у меня есть в моем.cpp, где он жалуется и указывает на:
...
#elif defined(WIN32)
#include <intrin.h>
...
1 ответ
Хотя этот вопрос старый, он заслуживает определенного ответа, поскольку это относительно важная тема для современных компиляторов C/C++ и охватывает проблему переносимости между компиляторами с точки зрения написания кода с низкого уровня на средний.
Внутренности по своей природе, как правило, не переносимы. Какие встроенные функции будет предоставлять компилятор и как он их предоставит, будет отличаться от другого компилятора.
В вашем случае MSVC определен в каталоге include для MSVC — он будет в вашей папке Program Files для Visual Studio. Файлы заголовков в этом каталоге не распознаются MinGW по умолчанию. В зависимости от того, к каким встроенным функциям вы пытаетесь получить доступ и какой компилятор вы используете, вам придется включать разные заголовки или обращаться к разным функциям.
Например, для доступа к x86
CPUID
инструкция, объявленная в
<intrin.h>
для MSVC вам придется использовать
<cpuid.h>
вместо этого с MinGW. Это означает, что вам потребуется условная компиляция для разных компиляторов, которые поддерживает ваш код, как и для разных операционных систем, которые поддерживает ваш код:
#if defined(_WIN32)
#if defined(__GNUC__)
#include <cpuid.h>
#elif defined(_MSC_VER)
#include <intrin.h>
#else
...
#endif
#else
...
#endif
Для дальнейшего чтения рекомендую: