Visual Studio 19 Ошибки при сборке с использованием встроенных файлов и макросов - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь выучить Вулкан из книги, в которой есть некоторые алгоритмы. Код, представленный в этой книге, использует встроенные файлы (.inl) и макросы. Я выполняю шаги, упомянутые в этой книге, но каждый раз, когда я пытаюсь создать свой код, я получаю список различных ошибок в файле .inl.

Я нашел пример кода в интернете, который более-менее похож на мой код, поэтому я не знаю, где может быть моя ошибка. Я знаю, для чего нужны встроенные файлы, но я никогда не использую их для определения макросов.

Файлы выглядят так:
ListOfFunctions.inl

#ifndef EXPORTED_VULKAN_FUNCTION
#define EXPORTED_VULKAN_FUNCTION( function )
#endif
EXPORTED_VULKAN_FUNCTION(vkGetInstanceProcAddr) // red underlined
#undef  EXPORTED_VULKAN_FUNCTION

Functions.h

#pragma once
#include "vulkan.h"

namespace vcb
{
#define EXPORTED_VULKAN_FUNCTION(name) extern PFN_##name name;
#include "ListOfFunctions.inl"
}

Functions.cpp

#include "Functions.h"

namespace vcb
{
#define EXPORTED_VULKAN_FUNCTION(name) PFN_##name name;
#include "ListOfFunctions.inl"
}

MyVulkan.h

#pragma once
#include <Windows.h>
#include <iostream>
#include "Functions.h"
#define VULKAN_LIB HMODULE

namespace vcb
{
  bool loadExportedFunction(const VULKAN_LIB& vulkan);
};

MyVulkan.cpp

#include "MyVulkan.h"

namespace vcb
{
 bool loadExportedFunction(const VULKAN_LIB& vulkan)
 {
#define LoadFunction GetProcAddress
#define EXPORTED_VULKAN_FUNCTION( name )          \
 name = (PFN_##name) LoadFunction(vulkan, #name); \
 if (name == nullptr) {                   \
  std::cout << "Could not load exported function: " #name << std::endl;\
  return false;                   \
 }

#include "ListOfFunctions.inl"
 return true;
 }
}

Я получаю много ошибок при попытке построить этот код. Некоторые из них говорят мне, что я переопределяю некоторые функции (EXPORTED_VULKAN_FUNCTION), но я не знаю, как решить эту проблему, а точнее: где мне не определить ее? Я даже не уверен, является ли файл .inl необходимостью. Если нет, то как и где я должен рефакторинг этого кода?

Скриншот ошибки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...