⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcc_diag-1.c

📁 用于进行gcc测试
💻 C
字号:
/* Test for GCC diagnositc formats.  *//* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> *//* { dg-do compile } *//* { dg-options "-Wformat" } */#include "format.h"#define ATTRIBUTE_DIAG(F) __attribute__ ((__format__ (F, 1, 2))) __attribute__ ((__nonnull__));/* Magic identifiers must be set before the attribute is used.  */typedef long long __gcc_host_wide_int__;typedef struct location_s{  const char *file;  int line;} location_t;union tree_node;typedef union tree_node *tree;extern int diag (const char *, ...) ATTRIBUTE_DIAG(__gcc_diag__);extern int tdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_tdiag__);extern int cdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cdiag__);extern int cxxdiag (const char *, ...) ATTRIBUTE_DIAG(__gcc_cxxdiag__);voidfoo (int i, int i1, int i2, unsigned int u, double d, char *s, void *p,     int *n, short int *hn, long int l, unsigned long int ul,     long int *ln, long double ld, wint_t lc, wchar_t *ls, llong ll,     ullong ull, unsigned int *un, const int *cn, signed char *ss,     unsigned char *us, const signed char *css, unsigned int u1,     unsigned int u2, location_t *loc, tree t1, union tree_node *t2,     tree *t3, tree t4[]){  /* Acceptable C90 specifiers, flags and modifiers.  */  diag ("%%");  tdiag ("%%");  cdiag ("%%");  cxxdiag ("%%");  diag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);  tdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);  cdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);  cxxdiag ("%d%i%o%u%x%c%s%p%%", i, i, u, u, u, i, s, p);  diag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);  tdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);  cdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);  cxxdiag ("%qd%qi%qo%qu%qx%qc%qs%qp%<%%%'%>", i, i, u, u, u, i, s, p);  diag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);  tdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);  cdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);  cxxdiag ("%ld%li%lo%lu%lx", l, l, ul, ul, ul);  diag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);  tdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);  cdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);  cxxdiag ("%lld%lli%llo%llu%llx", ll, ll, ull, ull, ull);  diag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);  tdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);  cdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);  cxxdiag ("%wd%wi%wo%wu%wx", ll, ll, ull, ull, ull);  diag ("%.*s", i, s);  tdiag ("%.*s", i, s);  cdiag ("%.*s", i, s);  cxxdiag ("%.*s", i, s);  /* Extensions provided in the diagnostic framework.  */  diag ("%m");  tdiag ("%m");  cdiag ("%m");  cxxdiag ("%m");  diag ("%H", loc);  tdiag ("%H", loc);  cdiag ("%H", loc);  cxxdiag ("%H", loc);  diag ("%J", t1);  tdiag ("%J", t1);  cdiag ("%J", t1);  cxxdiag ("%J", t1);  tdiag ("%D%F%T", t1, t1, t1);  tdiag ("%+D%+F%+T", t1, t1, t1);  tdiag ("%q+D%q+F%q+T", t1, t1, t1);  tdiag ("%D%D%D%D", t1, t2, *t3, t4[5]);  cdiag ("%D%F%T", t1, t1, t1);  cdiag ("%+D%+F%+T", t1, t1, t1);  cdiag ("%q+D%q+F%q+T", t1, t1, t1);  cdiag ("%D%D%D%D", t1, t2, *t3, t4[5]);  cdiag ("%E", t1);  cxxdiag ("%A%D%E%F%T%V", t1, t1, t1, t1, t1, t1);  cxxdiag ("%D%D%D%D", t1, t2, *t3, t4[5]);  cxxdiag ("%#A%#D%#E%#F%#T%#V", t1, t1, t1, t1, t1, t1);  cxxdiag ("%+A%+D%+E%+F%+T%+V", t1, t1, t1, t1, t1, t1);  cxxdiag ("%+#A%+#D%+#E%+#F%+#T%+#V", t1, t1, t1, t1, t1, t1);  cxxdiag ("%C%L%O%P%Q", i, i, i, i, i);  /* Bad stuff with extensions.  */  diag ("%m", i); /* { dg-warning "format" "extra arg" } */  tdiag ("%m", i); /* { dg-warning "format" "extra arg" } */  cdiag ("%m", i); /* { dg-warning "format" "extra arg" } */  cxxdiag ("%m", i); /* { dg-warning "format" "extra arg" } */  diag ("%#m"); /* { dg-warning "format" "bogus modifier" } */  tdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */  cdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */  cxxdiag ("%#m"); /* { dg-warning "format" "bogus modifier" } */  diag ("%+m"); /* { dg-warning "format" "bogus modifier" } */  tdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */  cdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */  cxxdiag ("%+m"); /* { dg-warning "format" "bogus modifier" } */  diag ("%H"); /* { dg-warning "format" "missing arg" } */  tdiag ("%H"); /* { dg-warning "format" "missing arg" } */  cdiag ("%H"); /* { dg-warning "format" "missing arg" } */  cxxdiag ("%H"); /* { dg-warning "format" "missing arg" } */  diag ("%J"); /* { dg-warning "format" "missing arg" } */  tdiag ("%J"); /* { dg-warning "format" "missing arg" } */  cdiag ("%J"); /* { dg-warning "format" "missing arg" } */  cxxdiag ("%J"); /* { dg-warning "format" "missing arg" } */  diag ("%H", i); /* { dg-warning "format" "wrong arg" } */  tdiag ("%H", i); /* { dg-warning "format" "wrong arg" } */  cdiag ("%H", i); /* { dg-warning "format" "wrong arg" } */  cxxdiag ("%H", i); /* { dg-warning "format" "wrong arg" } */  diag ("%H", p); /* { dg-warning "format" "wrong arg" } */  tdiag ("%H", p); /* { dg-warning "format" "wrong arg" } */  cdiag ("%H", p); /* { dg-warning "format" "wrong arg" } */  cxxdiag ("%H", p); /* { dg-warning "format" "wrong arg" } */  diag ("%J", loc); /* { dg-warning "format" "wrong arg" } */  tdiag ("%J", loc); /* { dg-warning "format" "wrong arg" } */  cdiag ("%J", loc); /* { dg-warning "format" "wrong arg" } */  cxxdiag ("%J", loc); /* { dg-warning "format" "wrong arg" } */  diag ("%#H", loc); /* { dg-warning "format" "bogus modifier" } */  tdiag ("%#H", loc); /* { dg-warning "format" "bogus modifier" } */  cdiag ("%#H", loc); /* { dg-warning "format" "bogus modifier" } */  cxxdiag ("%#H", loc); /* { dg-warning "format" "bogus modifier" } */  diag ("%+H", loc); /* { dg-warning "format" "bogus modifier" } */  tdiag ("%+H", loc); /* { dg-warning "format" "bogus modifier" } */  cdiag ("%+H", loc); /* { dg-warning "format" "bogus modifier" } */  cxxdiag ("%+H", loc); /* { dg-warning "format" "bogus modifier" } */  diag ("%D", t1); /* { dg-warning "format" "bogus tree" } */  tdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */  tdiag ("%E", t1); /* { dg-warning "format" "bogus tree" } */  tdiag ("%#D", t1); /* { dg-warning "format" "bogus modifier" } */  cdiag ("%A", t1); /* { dg-warning "format" "bogus tree" } */  cdiag ("%#D", t1); /* { dg-warning "format" "bogus modifier" } */  cdiag ("%+D", t1);  cxxdiag ("%C"); /* { dg-warning "format" "missing arg" } */  cxxdiag ("%C", l); /* { dg-warning "format" "wrong arg" } */  cxxdiag ("%C", i, i); /* { dg-warning "format" "extra arg" } */  cxxdiag ("%#C", i); /* { dg-warning "format" "bogus modifier" } */  cxxdiag ("%+C", i); /* { dg-warning "format" "bogus modifier" } */  tdiag ("%D"); /* { dg-warning "format" "missing arg" } */  cdiag ("%D"); /* { dg-warning "format" "missing arg" } */  cxxdiag ("%D"); /* { dg-warning "format" "missing arg" } */  tdiag ("%D", i); /* { dg-warning "format" "wrong arg" } */  cdiag ("%D", i); /* { dg-warning "format" "wrong arg" } */  cxxdiag ("%D", i); /* { dg-warning "format" "wrong arg" } */  tdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */  cdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */  cxxdiag ("%D", t1, t1); /* { dg-warning "format" "extra arg" } */  /* Standard specifiers not accepted in the diagnostic framework.  */  diag ("%X\n", u); /* { dg-warning "format" "HEX" } */  diag ("%f\n", d); /* { dg-warning "format" "float" } */  diag ("%e\n", d); /* { dg-warning "format" "float" } */  diag ("%E\n", d); /* { dg-warning "format" "float" } */  diag ("%g\n", d); /* { dg-warning "format" "float" } */  diag ("%G\n", d); /* { dg-warning "format" "float" } */  diag ("%n\n", n); /* { dg-warning "format" "counter" } */  diag ("%hd\n", i); /* { dg-warning "format" "conversion" } */  /* Various tests of bad argument types.  */  diag ("%-d", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%-d", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%-d", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%-d", i); /* { dg-warning "format" "bad flag" } */  diag ("% d", i); /* { dg-warning "format" "bad flag" } */  tdiag ("% d", i); /* { dg-warning "format" "bad flag" } */  cdiag ("% d", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("% d", i); /* { dg-warning "format" "bad flag" } */  diag ("%#o", u); /* { dg-warning "format" "bad flag" } */  tdiag ("%#o", u); /* { dg-warning "format" "bad flag" } */  cdiag ("%#o", u); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%#o", u); /* { dg-warning "format" "bad flag" } */  diag ("%0d", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%0d", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%0d", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%0d", i); /* { dg-warning "format" "bad flag" } */  diag ("%08d", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%08d", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%08d", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%08d", i); /* { dg-warning "format" "bad flag" } */  diag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%+d\n", i); /* { dg-warning "format" "bad flag" } */  diag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%3d\n", i); /* { dg-warning "format" "bad flag" } */  diag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%-3d\n", i); /* { dg-warning "format" "bad flag" } */  diag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%.7d\n", i); /* { dg-warning "format" "bad flag" } */  diag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */  tdiag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */  cdiag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%+9.4d\n", i); /* { dg-warning "format" "bad flag" } */  diag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */  tdiag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */  cdiag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */  cxxdiag ("%.3ld\n", l); /* { dg-warning "format" "bad flag" } */  diag ("%d %lu\n", i, ul);  diag ("%d", l); /* { dg-warning "format" "bad argument types" } */  diag ("%wd", l); /* { dg-warning "format" "bad argument types" } */  diag ("%d", ll); /* { dg-warning "format" "bad argument types" } */  diag ("%*s", i, s); /* { dg-warning "format" "bad * argument types" } */  diag ("%*.*s", i, i, s); /* { dg-warning "format" "bad * argument types" } */  diag ("%*d\n", i1, i); /* { dg-warning "format" "bad * argument types" } */  diag ("%.*d\n", i2, i); /* { dg-warning "format" "bad * argument types" } */  diag ("%*.*ld\n", i1, i2, l); /* { dg-warning "format" "bad * argument types" } */  diag ("%ld", i); /* { dg-warning "format" "bad argument types" } */  diag ("%s", n); /* { dg-warning "format" "bad argument types" } */  /* Wrong number of arguments.  */  diag ("%d%d", i); /* { dg-warning "arguments" "wrong number of args" } */  diag ("%d", i, i); /* { dg-warning "arguments" "wrong number of args" } */  /* Miscellaneous bogus constructions.  */  diag (""); /* { dg-warning "zero-length" "warning for empty format" } */  diag ("\0"); /* { dg-warning "embedded" "warning for embedded NUL" } */  diag ("%d\0", i); /* { dg-warning "embedded" "warning for embedded NUL" } */  diag ("%d\0%d", i, i); /* { dg-warning "embedded|too many" "warning for embedded NUL" } */  diag (NULL); /* { dg-warning "null" "null format string warning" } */  diag ("%"); /* { dg-warning "trailing" "trailing % warning" } */  diag ((const char *)L"foo"); /* { dg-warning "wide" "wide string" } */  diag ("%s", (char *)0); /* { dg-warning "null" "%s with NULL" } */  /* Make sure we still get warnings for regular printf.  */  printf ("%d\n", ll); /* { dg-warning "format" "bad argument types" } */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -