__declspec(dllimport)
указывает, что функция должна быть импортирована из отдельной библиотеки DLL;Я полагаю, что, в зависимости от настроек статического / динамического связывания CRT, это определяется по-разному.
__cdecl
- соглашение о вызовах, используемое для функции;соглашение о вызовах сообщает компилятору, как функция ожидает вызова (в каком порядке параметры помещаются в стек, если для параметров используется какой-либо регистр, где хранится возвращаемое значение, кто отвечает за очистку стека, ...);в общем, вам не следует беспокоиться об этом, пока вы не пишете библиотеки.
__MINGW_NOTHROW
- это #define
d, чтобы расширить до __attribute__ ((__nothrow__))
, которое является специфичным для MinGW расширением, которое сообщаеткомпилятор, что функция не будет генерировать исключения;это позволяет компилятору выполнять некоторые оптимизации.
Обратите внимание, что все это не стандартные атрибуты C, а специфичные для компилятора / платформы вещи.Опять же, в общем, вы не должны беспокоиться о них, они необходимы для правильной работы CRT, но пока вы не создаете библиотеки, вы можете уйти, не зная о них ничего.:)