Поскольку дерево включения Psapi.h тривиально, я собираюсь привести пример.
Все зависит от VStudio 2015 (Сообщество) ( v14.0.25431.01 Update 3 ) и Windows Kits 8.1 (? Смешно, потому что v10 там тоже есть) файлы (с заданными по умолчанию переменными env и определениями препроцессора):
Итак, при достижении Psapi.h ( # 87 : BOOL WINAPI EnumProcesses (...
)компилятор ничего не знает о BOOL , поэтому он жалуется.
Windows.h включает minwindef.h (косвенно, через windef.h ), и именно поэтому он работает, когда вы включаете его до Psapi.h .
Лично я считаю, что это ошибкав Psapi.h , поскольку он не самодостаточен , но для этого может быть веская причина (о которой я не знаю).
В любом случае, если это действительно ошибка, это не будет MS 1 st one:)
#include <Windows.h>
#include <WinSock2.h>
// main present just for rigorosity's sake
int main() {
return 0;
}