Path: utzoo!mnetor!uunet!husc6!necntc!ima!haddock!karl From: karl@haddock.ISC.COM (Karl Heuer) Newsgroups: comp.lang.c Subject: Re: Volatile is Necessary Message-ID: <3353@haddock.ISC.COM> Date: 6 Apr 88 21:58:28 GMT References: <7569@brl-smoke.ARPA> <-63852956@sneaky> Reply-To: karl@haddock.ima.isc.com (Karl Heuer) Organization: Interactive Systems, Boston Lines: 12 In article <-63852956@sneaky> gordon@sneaky.UUCP writes: ># define setjmp(env) (_builtin_setjmp(env) + 0) >where the +0 ensures that &setjmp draws an error message It doesn't work that way. "&setjmp" (more generally, any use of a function- -like macro without a left parenthesis) will not be recognized as a macro and hence no substitution will take place. (This feature allows you to take the address of putchar, for example, even if it's implemented as a macro.) So you might as well use "#define setjmp(env) __builtin_setjmp(env)" and let the linker complain about the unresolved symbol "setjmp". Karl W. Z. Heuer (ima!haddock!karl or karl@haddock.isc.com), The Walking Lint