Initial revision
This commit is contained in:
85
lang/cem/ctest/ctdecl/decl.c
Normal file
85
lang/cem/ctest/ctdecl/decl.c
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
*
|
||||
* This product is part of the Amsterdam Compiler Kit.
|
||||
*
|
||||
* Permission to use, sell, duplicate or disclose this software must be
|
||||
* obtained in writing. Requests for such permissions may be sent to
|
||||
*
|
||||
* Dr. Andrew S. Tanenbaum
|
||||
* Wiskundig Seminarium
|
||||
* Vrije Universiteit
|
||||
* Postbox 7161
|
||||
* 1007 MC Amsterdam
|
||||
* The Netherlands
|
||||
*
|
||||
*/
|
||||
|
||||
/* Author: E.G. Keizer */
|
||||
|
||||
/* Test a few declaration features */
|
||||
/* Such as:
|
||||
forward function declarations,
|
||||
redeclarations,
|
||||
pointer to function declarations.
|
||||
*/
|
||||
|
||||
static int sqr() ; /* forward declarations */
|
||||
extern int sqrt();
|
||||
|
||||
main() {
|
||||
fdcl() ;
|
||||
hidden() ;
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
fdcl() {
|
||||
int (*a[2])() ;
|
||||
|
||||
printf("sqr(4) %d\n",sqr(4)) ;
|
||||
|
||||
a[0]=sqr ; a[1]=sqrt ;
|
||||
printf("(*a[0])(16) %d\n",(*a[0])(16) ) ;
|
||||
printf("(*a[1])( (*a[0])(3) ) %d\n", (*a[1])( (*a[0])(3) ) ) ;
|
||||
}
|
||||
|
||||
static int sqr(par) int par ; {
|
||||
return par*par ;
|
||||
}
|
||||
|
||||
int sqrt(par) int par ; {
|
||||
float x1,x2 ;
|
||||
int i ;
|
||||
|
||||
if ( par<0 ) return -1 ;
|
||||
x1 = par ;
|
||||
i=0 ;
|
||||
do {
|
||||
x2 = x1 ;
|
||||
x1 = ( x2*x2 + par ) / (2*x2) ;
|
||||
if ( i++>=100 ) return -2 ;
|
||||
} while ( ( x2<x1 ? x1-x2 : x2-x1 ) > 1e-5 ) ;
|
||||
return (x1+x2)/2 ;
|
||||
}
|
||||
|
||||
int a = -8 ;
|
||||
|
||||
hidden() {
|
||||
hide() ;
|
||||
printf("a outside hide %d\n",a) ;
|
||||
}
|
||||
|
||||
int hide() {
|
||||
int a ;
|
||||
|
||||
a = 4 ;
|
||||
printf("a in hide %d\n",a) ;
|
||||
{
|
||||
int a ;
|
||||
|
||||
a = 16 ;
|
||||
printf("a in in hide %d\n",a) ;
|
||||
|
||||
}
|
||||
printf("a in hide %d\n",a) ;
|
||||
}
|
||||
Reference in New Issue
Block a user