如何禁用 C++ 宏中的警告

How to disable a warning within a C++ macro

在 Visual C++ 中,您可以使用 pragma 暂时禁用警告:

#pragma warning(suppress: 4307)

如何禁用宏中的警告,例如,当我引发这样的 "integral constant overflow" 警告时:

#define TIMES_A_MILLION(x) x * 1000000
int value = TIMES_A_MILLION(4711);

我不想在使用宏的每个地方重复警告,但希望抑制成为宏本身的一部分。

这样显然不行:

#define TIMES_A_MILLION(x) \
#pragma warning(suppress: 4307) \
  x * 1000000

在您的情况下,您必须使用扩展程序 __pragma

__pragma

而不是

#pragma