From: Ross B. <r.b...@18...> - 2001-10-09 16:20:33
|
Hi, Under Linux with GCC this command: $ cat /dev/null | /lib/cpp -dM -undef (don't define any non-standard macros, and then print all macros defined in /dev/null) Prints nothing, as the standard macros (__FILE__, __LINE__ and __COLUMN__) are not relevant to /dev/null and there are no macros defined in /dev/null. However, in MinGW I get: #define __i386__ 1 #define __i386 1 #define i386 1 If I don't undef the standard macros there are many more (WINNT, i686, etc). I feel that it should undefine everything if I specify -undef. Ross --=20 Ross Burton Software Engineer OneEighty Software Ltd Tel: +44 20 8680 8712 Cygnet House Fax: +44 20 8680 8453 12-14 Sydenham Road r.b...@18... Croydon, Surrey CR9 2ET, UK http://www.180sw.com./ =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Under the Regulation of Investigatory Powers (RIP) Act 2000 together with any and all Regulations in force pursuant to the Act OneEighty Software Ltd reserves the right to monitor any or all incoming or outgoing communications as provided for under the Act |
From: <dan...@ya...> - 2001-10-09 20:44:59
|
--- Ross Burton <r.b...@18...> wrote: > Hi, > > Under Linux with GCC this command: > > $ cat /dev/null | /lib/cpp -dM -undef > > (don't define any non-standard macros, and then print all macros > defined > in /dev/null) > > Prints nothing, as the standard macros (__FILE__, __LINE__ and > __COLUMN__) are not relevant to /dev/null and there are no macros > defined in /dev/null. > > However, in MinGW I get: > > #define __i386__ 1 > #define __i386 1 > #define i386 1 > > If I don't undef the standard macros there are many more (WINNT, > i686, > etc). I feel that it should undefine everything if I specify -undef. > > Ross My understanding is that only the *predefines* get undefined, but not defines thar are part of the specs. In your example the __i386__ machine defines are part of the CPP_CPU specs. Please correct me if I've got it wrong. Danny http://travel.yahoo.com.au - Yahoo! Travel - Got Itchy feet? Get inspired! |
From: Jeff S. <js...@si...> - 2001-10-09 21:27:21
|
Ross Burton wrote: > Under Linux with GCC this command: > > $ cat /dev/null | /lib/cpp -dM -undef > > (don't define any non-standard macros, and then print all macros defined > in /dev/null) > > Prints nothing, as the standard macros (__FILE__, __LINE__ and > __COLUMN__) are not relevant to /dev/null and there are no macros > defined in /dev/null. > > However, in MinGW I get: > > #define __i386__ 1 > #define __i386 1 > #define i386 1 > > If I don't undef the standard macros there are many more (WINNT, i686, > etc). I feel that it should undefine everything if I specify -undef. From cpp.texi: @item -undef Do not predefine any system-specific macros. The common predefined macros remain defined. I find this depends on the GCC version. The 2.95 cpp on Linux should behave similarly. Jeff |