1 extern int fun(void); 2 extern int (*ptr)(void); 3 4 static inline int inl(int *a) 5 { 6 return *a + 1; 7 } 8 9 10 int test(void); 11 int test(void) 12 { 13 unsigned int s = 0; 14 15 // OK 16 s += sizeof &fun; 17 s += sizeof ptr; 18 s += sizeof &ptr; 19 s += sizeof &inl; 20 21 // KO 22 s += sizeof fun; 23 s += sizeof *fun; 24 25 s += sizeof *ptr; 26 27 s += sizeof inl; 28 s += sizeof *inl; 29 30 s += sizeof __builtin_trap; 31 s += sizeof *__builtin_trap; 32 33 return s; 34 } 35 36 /* 37 * check-name: sizeof-function 38 * check-command: sparse -Wpointer-arith -Wno-decl $file 39 * 40 * check-error-start 41 sizeof-function.c:22:14: warning: expression using sizeof on a function 42 sizeof-function.c:23:14: warning: expression using sizeof on a function 43 sizeof-function.c:25:14: warning: expression using sizeof on a function 44 sizeof-function.c:27:14: warning: expression using sizeof on a function 45 sizeof-function.c:28:14: warning: expression using sizeof on a function 46 sizeof-function.c:30:14: warning: expression using sizeof on a function 47 sizeof-function.c:31:14: warning: expression using sizeof on a function 48 * check-error-end 49 */ 50