File: csyntax16.c

package info (click to toggle)
splint 1%3A3.1.2%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid, trixie
  • size: 21,004 kB
  • sloc: ansic: 150,869; yacc: 3,465; sh: 3,034; makefile: 2,157; lex: 412
file content (48 lines) | stat: -rw-r--r-- 950 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 * lclfoo.c - test lclint
 */

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   int i = 0, num;
   float pet = 0.0;
   int (*qfun)(float *);

   int (*getbuiltout(int))(float *);

   num = (argc > 1) ? atoi(argv[1]) : 0;

   qfun = getbuiltout(num);

   if (qfun != NULL) {
      i = qfun(&pet);
      printf("number in float %f and returns %d\n", pet, i);
      exit(EXIT_SUCCESS);
   } else exit(EXIT_FAILURE);
}

/*
 * should be a function (of one arg - int) returning
 * a pointer to a function (of one arg - float *) returning int
 * 
 * From: cdecl
 * cdecl> declare getbuiltout as function (verbose as int) returning
 *        pointer to function (pobj as pointer to float) returning int
 * int (*getbuiltout(int verbose))(float *pobj) { }
 */

int (*getbuiltout(int verbose))(float *)
{
   int qpolygon(float *);

   switch(verbose) {
    case 1:
      return qpolygon;
    default:
      return NULL;
   }
}