Given
--- main.h ---
not_declared_yet();
--- main.c ---
#include "main.h"
--- Makefile ---

all:
        gcc --version
        gcc -Wall -E -I.  main.c > huhu.ii
        -gcc -Wall  -I.  huhu.ii
        gcc -Wall  -I.  main.c
----

make produces:
-------------------
make 
gcc --version
gcc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

gcc -Wall -E -I.  main.c > huhu.ii
gcc -Wall  -I.  huhu.ii
In file included from main.c:2:
main.h:1: error: expected constructor, destructor, or type conversion before
‘;’ token
make: [all] Error 1 (ignored)
gcc -Wall  -I.  main.c
In file included from main.c:1:
main.h:1: warning: data definition has no type or storage class
main.h:1: warning: type defaults to ‘int’ in declaration of
‘not_declared_yet’
...(truncated)
-------------------

That is 'In file included from main.c:2:' instead of main.cc:1: when 
the file is preprocessed first.

---- huhu.ii contains ---
# 1 "main.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "main.c"
# 1 "main.h" 1
not_declared_yet();
# 1 "main.c" 2
-------------------------


-- 
           Summary: #include location is offset by one row in errors from
                    preprocessed files
           Product: gcc
           Version: 4.2.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: antalk at chello dot hu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36674

Reply via email to