我想生成一个编译错误或警告取决于,例如,在字符串中写的内容,在以下主要我希望如果字符串未初始化将产生编译错误(Obviusly不起作用我希望你知道正确的做法。)
#define EXAMPLE_FUNCTION(s1) ({ \
int n = 0;\
if (s1) {n = 1;} \
n; \
})
int main()
{
char *str = NULL;
#if (EXAMPLE_FUNCTION(str) == 0)
#error whatever error
#endif
return 0;
}
这是一个冗余的例子,但我想做的是当printf找到错误的格式时所做的事情,例如,如果我写这个:
#include<stdio.h>
int main()
{
printf("%0s\n", "whatever string");
return 0;
}
Gcc返回以下警告:
prueba2.c:5:11: warning: flag '0' results in undefined behavior with 's' conversion specifier [-Wformat]
printf("%0s\n", "whatever string");
~^~
1 warning generated.
问题是如何在编译时产生这种错误。