禁用 LibCURL 包含的 PlaySound()

Disabling PlaySound() that is included by LibCURL

我用 raylib 开发已经有一段时间了。

我已经让 libcurl 工作了,但它不适用于 windows.h,因为函数名称覆盖了其他名称。

但是,有一个解决方法,通过提及这些定义(在 curl.h 中):

#define NOGDICAPMASKS - this disables CC_, LC_, PC_, CP_ TC_ RC_

#define NOVIRTUALKEYCODES - this disables VK_

#define NOWINMESSAGES - this disables WM_ EM_ LB_

#define NOWINSTYLES - this disables WS_, CS_, ES_, LBS_, SBS_, CBS_

#define NOSYSMETRICS - this disables SM_

列表还在继续...

请记住,我不需要这些,我不会使用其中任何一个,因为我正在努力使其尽可能跨平台,只有 libcurl 包含这些但它不使用他们以任何方式。

我要问的是,我在哪里可以找到这些的完整列表,如果没有定义,则停止包括 PlaySound()PlaySoundA() 等。以及其他相关功能听起来,因为它们干扰了来自 raylib 的 PlaySound()

你提到的#define是Win32 SDK定义的。他们指示 windows.h(更准确地说,是 windows.h 本身 #include 的各种其他 Win32 headers)不要 define/declare 各种符号。

您要查找的 #define 以省略 PlaySound(A|W)(在 mmsystem.h 中)的声明是:

#define MMNOSOUND

这是 mmsystem.h 中的完整 table 定义:

 *  Define:         Prevent inclusion of:
 *  --------------  --------------------------------------------------------
 *  MMNODRV         Installable driver support
 *  MMNOSOUND       Sound support
 *  MMNOWAVE        Waveform support
 *  MMNOMIDI        MIDI support
 *  MMNOAUX         Auxiliary audio support
 *  MMNOMIXER       Mixer support
 *  MMNOTIMER       Timer support
 *  MMNOJOY         Joystick support
 *  MMNOMCI         MCI support
 *  MMNOMMIO        Multimedia file I/O support
 *  MMNOMMSYSTEM    General MMSYSTEM functions

或者:

#define WIN32_LEAN_AND_MEAN

这将阻止 windows.h #include 发送一堆 headers,包括 mmsystem.h.

Where did WIN32_LEAN_AND_MEAN come from?