我使用的是链接到MSVC的clang++。
我编译了着色器(DirectXTK\Shaders),并在源代码中包含了SpriteBatch和SpriteFont。
如果我只包括头文件(.h),我会得到链接错误;如果我包括源文件(.cpp;有没有.h),我会得到这样的结果:
SpriteBatch.cpp:532:27: error: expected unqualified-id
size_t newSize = std::max(InitialQueueSize, mSpriteQueueArraySize * 2);
^
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\minwindef.h:193:29: note: expanded from macro 'max'
#define max(a,b) (((a) > (b)) ? (a) : (b))我试图在DirectXTK的GitHub问题页面、这个网站和网络上找到解决方案,但没有找到任何有用的东西。
发布于 2020-08-13 10:19:18
Windows头文件定义了一个'min‘和'max’宏,它与来自<algorithm>的std::min/std::max的交互很差。
在我所有的模板和测试中,为了避免这个问题,我在使用Windows.h之前定义了NOMINMAX。这通常是一种更好的做法。如果在执行此操作时仍需要使用宏表单,则可以使用__min/_max。
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#define NODRAWTEXT
#define NOGDI
#define NOBITMAP
#define NOMCX
#define NOSERVICE
#define NOHELP
#include <Windows.h>请参阅this other thread和this blog post
https://stackoverflow.com/questions/63382610
复制相似问题