You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Nikola Milutinovic <Ni...@ev.co.yu> on 2001/12/02 18:15:59 UTC

config/8926: DEC CC has a problem with indented C Pre-Processor directives

>Number:         8926
>Category:       config
>Synopsis:       DEC CC has a problem with indented C Pre-Processor directives
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    apache
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Sun Dec 02 09:20:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Nikola.Milutinovic@ev.co.yu
>Release:        1.3.2x and 2.0.x
>Organization:
apache
>Environment:
Digital UNIX 4.0D/F, using native CC

uname -a = "OSF1 Uprava.ev.co.yu V4.0 878 alpha"
>Description:
DEC CC cannot work with C (*.h or *.c) source code which contains indented CPP directives, such as:

#ifdef THIS_OR_THAT
  #include <some_header.h>
#endif

I have looked at C language specifications and all I could get (K&R c and ANSII C) state that "#" MUST start in column 1 of the line, the rest of the directive may be indented. Thus, this would be OK:

#ifdef THIS_OR_THAT
#  include <some_header.h>
#endif
And the above change works.

In Apache, not only "configure" script uses this (APR, detection of INT64_C in <stdint.h>), but it is present in several instances of source itself.

I can change this by hand, but it gets tiresome after a couple of times.

Is this a GNU CC speciality or is it a new part of C Language specification?

In other words, should I bother you or Compaq?

Nix.
>How-To-Repeat:
Get a DEC CC for Alpha, or try ANSI CC. Unless there was a change in ANSI specification, it should produce an error or a warning while compiling the simplest example.
>Fix:
Do not indent CPP directives. I know it makes things more readable, but CPP language is not a part of C language, strictly speaking.

Or at least follow what ANSI says, "keep # in the first column, but indent the rest of the CPP directive".

Nix.
>Release-Note:
>Audit-Trail:
>Unformatted:
 [In order for any reply to be added to the PR database, you need]
 [to include <ap...@Apache.Org> in the Cc line and make sure the]
 [subject line starts with the report component and number, with ]
 [or without any 'Re:' prefixes (such as "general/1098:" or      ]
 ["Re: general/1098:").  If the subject doesn't match this       ]
 [pattern, your message will be misfiled and ignored.  The       ]
 ["apbugs" address is not added to the Cc line of messages from  ]
 [the database automatically because of the potential for mail   ]
 [loops.  If you do not include this Cc, your reply may be ig-   ]
 [nored unless you are responding to an explicit request from a  ]
 [developer.  Reply only with text; DO NOT SEND ATTACHMENTS!     ]