使用类似宏的函数生成您自己的编译错误\警告

时间:2017-12-08 03:14:58

标签: c gcc

我想生成一个编译错误或警告取决于,例如,在字符串中写的内容,在以下主要我希望如果字符串未初始化将产生编译错误(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.

问题是如何在编译时产生这种错误。

0 个答案:

没有答案