[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#762005: gcc-4.9: prototype subroutine (non-static) != functional subroutine (static)



Package: gcc-4.9
Version: 4.9.1-12
Severity: normal

Dear Maintainer,

   * What led up to the situation?
My program has interlocking subroutines. 
a() is called by any mouse click. Depending on state, it may call b(), which creates a subwindow (OpenGL)
Creation of a subwindow invokes c(), which associates mouse activity with that subwindow
A mouse click on the subwindow invokes c(), which calls a().
Accordingly, a prototype of a(); is placed before c(){...}, followed by b(){...}, followed by the actual implementation of a(){...}.
This construction results in an error message:
"error: static declaration of 'a()' follows non-static declaration void a(){"
   * What exactly did you do (or not do) that was effective (or
     ineffective)?
I changed the repository to "jessie" from "wheezy", and upgraded the gcc package. (no joy).
I placed the keyword "static" in the prototype declaration: "static void a();"
   * What was the outcome of this action?
an error message, "invalid storage class for function 'a'"
   * What outcome did you expect instead?
compile without error

This construction has compiled successfully on Debian stable amd64 for the past year.
Note to upstream: The use of the keyword "static" to indicate that the subroutine is local to
the file in which it is found is inconsistent with the meaning elsewhere in the C language;
i.e. "static" implies pesistent vs volatile. A more appropriate keyword would be "local".


-- System Information:
Debian Release: 7.6
  APT prefers testing-updates
  APT policy: (500, 'testing-updates'), (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-4-686-pae (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gcc-4.9 depends on:
ii  binutils        2.24.51.20140903-1
ii  cpp-4.9         4.9.1-12
ii  gcc-4.9-base    4.9.1-12
ii  libc6           2.19-11
ii  libcloog-isl4   0.18.2-1
ii  libgcc-4.9-dev  4.9.1-12
ii  libgmp10        2:6.0.0+dfsg-6
ii  libisl10        0.12.2-2
ii  libmpc3         1.0.2-1
ii  libmpfr4        3.1.2-1
ii  zlib1g          1:1.2.7.dfsg-13

Versions of packages gcc-4.9 recommends:
ii  libc6-dev  2.19-11

Versions of packages gcc-4.9 suggests:
ii  binutils [binutils-gold]  2.24.51.20140903-1
pn  gcc-4.9-doc               <none>
pn  gcc-4.9-locales           <none>
pn  gcc-4.9-multilib          <none>
pn  libasan1-dbg              <none>
pn  libatomic1-dbg            <none>
pn  libcilkrts5-dbg           <none>
pn  libgcc1-dbg               <none>
pn  libgomp1-dbg              <none>
pn  libitm1-dbg               <none>
pn  liblsan0-dbg              <none>
pn  libquadmath0-dbg          <none>
pn  libtsan0-dbg              <none>
pn  libubsan0-dbg             <none>
pn  libvtv0-dbg               <none>

-- no debconf information


Reply to: