Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbosgd!gatech!seismo!umcp-cs!chris From: chris@umcp-cs.UUCP (Chris Torek) Newsgroups: net.lang.c Subject: Re: Re: fast code and no morals Message-ID: <3032@umcp-cs.UUCP> Date: Mon, 3-Feb-86 23:54:38 EST Article-I.D.: umcp-cs.3032 Posted: Mon Feb 3 23:54:38 1986 Date-Received: Wed, 5-Feb-86 02:28:18 EST References: <842@megaron.UUCP> <1820@brl-tgr.ARPA> <68@valid.UUCP> <651@brl-smoke.ARPA> <366@ccivax.UUCP> <231@imagen.UUCP> Distribution: net Organization: U of Maryland, Computer Science Dept., College Park, MD Lines: 62 In article <231@imagen.UUCP> SofPasuk@imagen.UUCP writes: > "C" is as portable as Stonehedge!! ... and more about C code making hidden assumptions. C is portable: /* echo */ #include main(argc, argv) register int argc; register char **argv; { register int i; argc--; for (i = 1; i <= argc; i++) printf("%s%c", argv[i], i < argc ? ' ' : '\n'); exit(0); } C is not portable: /* probebus */ main(argc, argv) { register int i; register int size = 1; if (strcmp(argv[1], "i") == 0) /* by ints */ size = 4; for (i = 1 << 18; i < (1 << 19); i += size) { switch (size) { case 1: if (*(char *) i != 0) { printf("%x\n", i); exit(1); } break; case 4: if (*(int *) i != 0) { printf("%x\n", i); exit(1); } break; } } exit(0); } /* unportable assumptions: sizeof (int) == sizeof (char *); *(char *)0 == ""; ints hold > 16 bits; type casts can be used pretty much arbitrarily. */ It is not the language that makes code portable, though it can help or hurt: Programmers make code portable, or do not. Incidentally, it is `Stonehenge'. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 1415) UUCP: seismo!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris@mimsy.umd.edu