Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.glorb.com!npeer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Tue, 27 Nov 2012 22:48:28 -0600 Message-ID: <50B5979D.7F60@mindspring.com> Date: Tue, 27 Nov 2012 23:48:29 -0500 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: what is the best way References: <50b4d9fc$0$3108$ba620e4c@news.skynet.be> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 53 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.154.220.227 X-Trace: sv3-GcjfgBs4jegJhdsVTG4GgnB3qIX9uDZn+1UYoSl11jGmhWnKCmHmlTTQ0XwE9R1pVG4lNMR0hIBTEuY!OBSmSi71aPfQFwYtvuqsxLYJtWwyb4nYn2YGe6dFL0kjt9u0IzO+l/UHmGDVB867MKvYKJU548xk!e1zuYAXH4wY= X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2454 X-Received-Bytes: 2595 Xref: csiph.com comp.lang.c:28714 Keith Thompson wrote: > > Les Cargill writes: > [...] > > - Have this basic structure: > > > > thing.h: > > > > #ifndef _THING_H_ > > #define _THING_H_ 1 > > ... > > #endif > > > > guarding all header files. > [...] > > Identifiers starting with an underscore and an uppercase letter > (or with two underscores) are reserved to the implementation for > any use; in other words, you should never use such identifiers in > your own code. > > Just use this: > > #ifndef THING_H > #define THING_H > ... > #endif /* THING_H */ > > (or some scheme that maps reasonably well from file names to > identifiers without stepping on anything that's reserved). > > Note that identifiers starting with E and either a digit or an > uppercase letter may be used for implementation-defined macros > in , so a header name that happens to start with E might > cause problems. One way to avoid that is: > > #ifndef H_THING > #define H_THING > ... > #endif /* H_THING */ > > It's not terribly likely that an implementation is going to use > _THING_H_ or EXTRA_FOO for its own purposes, so you can very likely > get away with using such identifiers yourself, but if you avoid > reserved identifiers you have one less thing to worry about. I use #ifndef H_THING_H #define H_THING_H -- pete