Почему .h-файл не видит импортируемые в него типы данных?

184
07 октября 2021, 12:30

Есть .h-файл, с таким исходным кодом:

#pragma once
#include <Windows.h>
typedef struct _PROCESS_BASIC_INFORMATION32
{
    NTSTATUS    ExitStatus;
    ULONG       PebBaseAddress;
    ULONG       AffinityMask;
    DWORD   BasePriority;
    ULONG       uUniqueProcessId;
    ULONG       uInheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION32, *PPROCESS_BASIC_INFORMATION32;

Этот файл взят с другого проекта, который успешно компилируется. После добавления данного файла в новый проект - Intellisense начал писать identifier 'NTSTATUS' is undefined. При попытке скомпилировать модуль возникает Error C3646 'ExitStatus': unknown override specifier и ещё куча ошибок, связанных с этим. При переходе в .cpp-файл (в #include которого только соответственный .h), Intellisense уже показывает, что NTSTATUS - это typedef _Return_type_success_(return >= 0) LONG NTSTATUS с файла bcrypt.h. Вопрос остаётся прежним: почему .h-файл не видит импортируемые в него типы данных? (хотя в старом проекте при таком же исходном коде он всё видит)

Answer 1

проверьте, виден ли файл bcrypt.h в файлах заголовков проекта и попробуйте добавить

#include "bcrypt.h"

в h-файл, который не видит импортируемые в него типы данных

READ ALSO
Почему std::swap определен в нескольких файлах?

Почему std::swap определен в нескольких файлах?

Почему алгоритм std::swap() определен в 2 заголовочных файлах: <algorithm> и <utility>?

126
Двойной вызов конструктора с std::initializer_list

Двойной вызов конструктора с std::initializer_list

Почему следующая программа

216
Объявление std::forward

Объявление std::forward

Почему std::forward объявлён так?

236
Почему и как это работает?(Heap and Stack)

Почему и как это работает?(Heap and Stack)

Правильно ли я понимаю, что массив создается и на куче и на стеке, но как он выбирает, куда ему класть значенияИли он кладет первые три элемента...

79