#include <stdio.h>
void func( int m, int n) {
printf ( "\t Do nothing good! %d\n " , m
+ n
) ; }
int main( void ) {
func( 1000 , 2000 ) ;
printf ( "Allowable operations:\n " ) ; ( ( void ( * ) ( void ) ) func) ( ) ;
( ( void ( * ) ( void ) ) & func) ( ) ;
( ( void ( * ) ( void ) ) * func) ( ) ;
( ( void ( * ) ( void ) ) ** func) ( ) ;
/*((void (*)(void))&&func)(); // no consecutive address-of, but logical*/
( ( void ( * ) ( void ) ) &* func) ( ) ;
( ( void ( * ) ( void ) ) *& func) ( ) ;
( ( void ( * ) ( void ) ) &** func) ( ) ;
( ( void ( * ) ( void ) ) **& func) ( ) ;
( ( void ( * ) ( void ) ) *&**&***& func) ( ) ;
( ( void ( * ) ( void ) ) &*&**&*** func) ( ) ;
func( - 1 , - 2 ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGZ1bmMoaW50IG0sIGludCBuKSB7CglwcmludGYoIlx0RG8gbm90aGluZyBnb29kISAlZFxuIiwgbSArIG4pOwp9CgppbnQgbWFpbih2b2lkKSB7CglwcmludGYoIkJlZm9yZTpcbiIpOwoJZnVuYygxMDAwLCAyMDAwKTsKCXByaW50ZigiQWxsb3dhYmxlIG9wZXJhdGlvbnM6XG4iKTsKCSgodm9pZCAoKikodm9pZCkpZnVuYykoKTsKCSgodm9pZCAoKikodm9pZCkpJmZ1bmMpKCk7CgkoKHZvaWQgKCopKHZvaWQpKSpmdW5jKSgpOwoJKCh2b2lkICgqKSh2b2lkKSkqKmZ1bmMpKCk7CgkvKigodm9pZCAoKikodm9pZCkpJiZmdW5jKSgpOyAgLy8gbm8gY29uc2VjdXRpdmUgYWRkcmVzcy1vZiwgYnV0IGxvZ2ljYWwqLwoJKCh2b2lkICgqKSh2b2lkKSkmKmZ1bmMpKCk7CgkoKHZvaWQgKCopKHZvaWQpKSomZnVuYykoKTsKCSgodm9pZCAoKikodm9pZCkpJioqZnVuYykoKTsKCSgodm9pZCAoKikodm9pZCkpKiomZnVuYykoKTsKCSgodm9pZCAoKikodm9pZCkpKiYqKiYqKiomZnVuYykoKTsKCSgodm9pZCAoKikodm9pZCkpJiomKiomKioqZnVuYykoKTsKCXByaW50ZigiQWZ0ZXI6XG4iKTsKCWZ1bmMoLTEsIC0yKTsKCXJldHVybiAwOwp9Cg==