📄 wbad-function-cast-1.c
字号:
/* Test operation of -Wbad-function-cast. *//* Based on gcc.dg/Wbad-function-cast-1.c. *//* { dg-do compile } *//* { dg-options "-std=gnu99 -Wbad-function-cast" } */int if1(void);char if2(void);long if3(void);_Complex double cf(void);#define FUNC(TYPE,NAME) \TYPE f ## NAME (void);FUNC (short _Fract, sf)FUNC (_Fract, f)FUNC (long _Fract, lf)FUNC (long long _Fract, llf)FUNC (unsigned short _Fract, usf)FUNC (unsigned _Fract, uf)FUNC (unsigned long _Fract, ulf)FUNC (unsigned long long _Fract, ullf)FUNC (_Sat short _Fract, Ssf)FUNC (_Sat _Fract, Sf)FUNC (_Sat long _Fract, Slf)FUNC (_Sat long long _Fract, Sllf)FUNC (_Sat unsigned short _Fract, Susf)FUNC (_Sat unsigned _Fract, Suf)FUNC (_Sat unsigned long _Fract, Sulf)FUNC (_Sat unsigned long long _Fract, Sullf)FUNC (short _Accum, sa)FUNC (_Accum, a)FUNC (long _Accum, la)FUNC (long long _Accum, lla)FUNC (unsigned short _Accum, usa)FUNC (unsigned _Accum, ua)FUNC (unsigned long _Accum, ula)FUNC (unsigned long long _Accum, ulla)FUNC (_Sat short _Accum, Ssa)FUNC (_Sat _Accum, Sa)FUNC (_Sat long _Accum, Sla)FUNC (_Sat long long _Accum, Slla)FUNC (_Sat unsigned short _Accum, Susa)FUNC (_Sat unsigned _Accum, Sua)FUNC (_Sat unsigned long _Accum, Sula)FUNC (_Sat unsigned long long _Accum, Sulla)voidfoo(void){#define TEST(NAME) \ /* Casts to void types are always OK. */ \ (void) f ## NAME (); \ (const void) f ## NAME (); \ /* Casts to the same type or similar types are OK. */ \ (short _Fract) f ## NAME (); \ (_Fract) f ## NAME (); \ (long _Fract) f ## NAME (); \ (long long _Fract) f ## NAME (); \ (unsigned short _Fract) f ## NAME (); \ (unsigned _Fract) f ## NAME (); \ (unsigned long _Fract) f ## NAME (); \ (unsigned long long _Fract) f ## NAME (); \ (_Sat short _Fract) f ## NAME (); \ (_Sat _Fract) f ## NAME (); \ (_Sat long _Fract) f ## NAME (); \ (_Sat long long _Fract) f ## NAME (); \ (_Sat unsigned short _Fract) f ## NAME (); \ (_Sat unsigned _Fract) f ## NAME (); \ (_Sat unsigned long _Fract) f ## NAME (); \ (_Sat unsigned long long _Fract) f ## NAME (); \ (short _Accum) f ## NAME (); \ (_Accum) f ## NAME (); \ (long _Accum) f ## NAME (); \ (long long _Accum) f ## NAME (); \ (unsigned short _Accum) f ## NAME (); \ (unsigned _Accum) f ## NAME (); \ (unsigned long _Accum) f ## NAME (); \ (unsigned long long _Accum) f ## NAME (); \ (_Sat short _Accum) f ## NAME (); \ (_Sat _Accum) f ## NAME (); \ (_Sat long _Accum) f ## NAME (); \ (_Sat long long _Accum) f ## NAME (); \ (_Sat unsigned short _Accum) f ## NAME (); \ (_Sat unsigned _Accum) f ## NAME (); \ (_Sat unsigned long _Accum) f ## NAME (); \ (_Sat unsigned long long _Accum) f ## NAME (); \ TEST (sf); TEST (f); TEST (lf); TEST (llf); TEST (usf); TEST (uf); TEST (ulf); TEST (ullf); TEST (Ssf); TEST (Sf); TEST (Slf); TEST (Sllf); TEST (Susf); TEST (Suf); TEST (Sulf); TEST (Sullf); TEST (sa); TEST (a); TEST (la); TEST (lla); TEST (usa); TEST (ua); TEST (ula); TEST (ulla); TEST (Ssa); TEST (Sa); TEST (Sla); TEST (Slla); TEST (Susa); TEST (Sua); TEST (Sula);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -