phils@tekigm.UUCP (Phil Staub) (10/24/86)
< --------------------------->
While trying to compile the MicroEMACS 3.7 sources with the Manx 3.20a
compiler, I ran into a problem with the #if'd code used to select
machine/compiler/os environment.
Problem:
	Error #109's to say that the if values need to be integer
	constants, but only if I compile with 32 bit ints. Compilation with
	16 bit ints works as expected.
To reproduce:
	Compile the program below with
		cc foo.c
	This works, while
		cc +l foo.c
	fails.
Questions:
	1. Has anyone else seen this behavior?
	2. Has anyone found a work around?
	3. Does the 3.30 compiler do the same thing?
Thanks,
Phil Staub
Tektronix, Inc.
ISI Engineering
P.O. Box 3500
Vancouver, Washington 98668
C1-904, (206) 253-5634
..tektronix!tekigm!phils
-------------------------------------------------------------------------------
/* set/clear these values to turn the messages below on or off */
#define A	0
#define B	0
#define C	0
#define D	0
#define E	0
#define F	0
main()
{
#if A
	printf("A is set\n");
#endif
#if B
	printf("B is set\n");
#endif
#if C
	printf("C is set\n");
#endif
#if A | B
	printf("A is set\n");
	printf("B is set\n");
#endif
#if A | C
	printf("A is set\n");
	printf("C is set\n");
#endif
#if B | C
	printf("B is set\n");
	printf("C is set\n");
#endif
#if A | B | C
	printf("A is set\n");
	printf("B is set\n");
	printf("C is set\n");
#endif
#if A | B | C | (D & (E | F))
	printf("composite\n");
#endif
}swalton@well.UUCP (Stephen R. Walton) (10/29/86)
In article <988@tekigm.UUCP> phils@tekigm.UUCP (Phil Staub) writes: >While trying to compile the MicroEMACS 3.7 sources with the Manx 3.20a >compiler, I ran into a problem with the #if'd code used to select >machine/compiler/os environment. > >Problem: > Error #109's to say that the if values need to be integer > constants, but only if I compile with 32 bit ints. Compilation with > 16 bit ints works as expected. and then an example using #if with operators & and |. Short answer: yes, it's a bug, to be fixed on the next release of Aztec C. Longer answer: for a good fix, albeit a bit slow, try the port of the Decus preprocessor on Fish disk 28; there is a cc command which invokes this cpp and the Aztec compiler in sequence.