我需要在#error预处理程序指令中显示一些相关信息。
例如:

#define myConstant 5

#if myConstant > 10
    #error myConstant has to be > 10, now %d  //should display "5"
#endif

我怎样才能做到这一点?

最佳答案

你不能#error不允许/支持该功能。

而是使用C11中的_Static_assert:

#define myConstant 5

#define STRINGIFY(x) STRINGIFY_(x)
#define STRINGIFY_(x) #x
_Static_assert(myConstant > 10, "myConstant has to be > 10, now " STRINGIFY(myConstant));

输出:

09-06 16:53