Xref: utzoo comp.sources.d:2139 comp.os.vms:6250 comp.lang.c:10219 Path: utzoo!utgpu!water!watmath!clyde!skep2!wcs From: wcs@skep2.ATT.COM (Bill.Stewart.) Newsgroups: comp.sources.d,comp.os.vms,comp.lang.c Subject: Re: flex Keywords: flex on VMS Message-ID: <125@skep2.ATT.COM> Date: 19 May 88 21:02:06 GMT References: <690@naucse.UUCP> <278@sdrc.UUCP> Reply-To: wcs@skep2.UUCP (46323-Bill.Stewart.,2G218,x0705,) Organization: AT&T Bell Labs Center 4632, Holmdel, NJ Lines: 23 In article <278@sdrc.UUCP> scjones@sdrc.UUCP (Larry Jones) writes: :In article <690@naucse.UUCP>, jdc@naucse.UUCP (John Campbell) writes: :> The 'C' question: :> Flex has the following global line: :> FILE *yyin=stdin, *yyout=stdout; :> which does not work at compile time on VMS. In other words, it appears :> the compiler does not treat stdin as a constant--it's value is known only :> at run-time. (VMS stdio.h says "extern noshare FILE *stdin;.) To work : :According to the latest ANSI draft (and many of the previous ones), stdin and :friends are simply expressions and not necessarily constant expressions. Thus, :they may not be used portably to initialize objects with static storage :duration. So, the compiler's OK, flex is not maximally portable (as you If the compiler's OK, what's this "noshare" business? It's been a while since I've seen the ANSI C draft, but I don't remember that being in it - it looks kind of like noalias? (Noalias had to go, and did - it was non-negotiable.) Also, something you declare to be extern shouldn't be assumed to be constant. So both are somewhat non-portable. -- # Thanks; # Bill Stewart, AT&T Bell Labs 2G218, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs # skep2 is a local machine I'm trying to turn into a server. Please send # mail to ho95c or ho95e instead. Thanks.