Path: utzoo!utgpu!water!watmath!clyde!att!rutgers!mailrus!uflorida!novavax!proxftl!bill From: bill@proxftl.UUCP (T. William Wells) Newsgroups: comp.std.c Subject: Re: function returning pointer to itself Message-ID: <486@proxftl.UUCP> Date: 18 Jul 88 09:52:55 GMT References: <7725@watdragon.waterloo.edu) <664@goofy.megatest.UUCP> Reply-To: bill@proxftl.UUCP (T. William Wells) Organization: Proximity Technology, Ft. Lauderdale Lines: 53 Summary: Expires: Sender: Followup-To: Distribution: Keywords: As I recall, the original discussion was on how to create a state machine using functions for the states. Anyway, as has been pointed out, the function can't return a pointer to itself. What it can do is to return a structure which contains a pointer to itself. The following code compiles and runs fine on our Sun. It should also be valid in Standard C. typedef struct STR { struct STR (*func)(); } STR; STR Str; STR func1(); STR func2(); STR func3(); main() { Str.func = func1; while (1) { Str = (*Str.func)(); } } STR func1() { STR str; printf("function 1\n"); str.func = func2; return (str); } STR func2() { STR str; printf("function 2\n"); str.func = func1; return (str); } STR func3() { printf("function 3\n"); exit(0); }