c++/3833: Fails to compile inline functions in objects

tarjeik@chemcon.no tarjeik@chemcon.no
Thu Jul 26 08:37:00 GMT 2001


>Number:         3833
>Category:       c++
>Synopsis:       Fails to compile inline functions in objects
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jul 26 08:36:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Tarjei Knapstad
>Release:        gcc 3.0
>Organization:
>Environment:
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../gcc-3.0/configure --prefix=/usr/local --enable-languages=c++ --enable-threads=posix
Thread model: posix
gcc version 3.0
>Description:
Inline functions in a class, which are declared in a header and defined in a separate file, fails to compile. resulting in undefined references when linking.

/tmp/cc2BWRjj.o: In function `main':
/tmp/cc2BWRjj.o(.text+0xe): undefined reference to `A::test()'
>How-To-Repeat:
inline.h:
class A
{
 public:
  //  void dummy();
  inline bool test();
};

inline.cpp:
#include "inline.h"

//  void
//  A::dummy()
//  {
//    test();
//  }

inline
bool A::test()
{
}

main.cpp:
#include "inline.h"

int main()
{
    A temp;
    temp.test();
    return 0;
}

g++ main.cpp inline.cpp -o main

>Fix:
Workarounds:
1. Put the declaration and definition in the same file.
2. Make calls to the inline functions inside the class where they are declared. Uncommenting the dummy() function above in both the -h and .cpp file demonstrates this.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="output.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="output.tar.gz"

H4sIACA1YDsAA+1Y4W7bNhDObz3FIR3QBAFlSXacwpmHubbaGvCcLEmDAMOgyhJtc6EoTaRSB0Pf
fSdaku0ka+phyRBUH2yTPH7HI3m8oywmOBPUZGzn6WDZltVutXYsxFF7s8zhWM0d66jZxFrbaTnI
dw6dwx2wnnBOFTKp/BRgB3//oOz6H3mP9b9QvAIbdtnyEARJsmusC+a7YBsB96WEnvGXAUk24Szo
GAbAkgGTOOagqFR7+8fGl2PUdjaGA8cosBQaWqHX6Sx1cNAvxv+9Bd81Ip+Jp43+b4j/pn03/u2j
Vh3/zwEd7voQ/FfRXw2Wxz4TCnKBDnVA9JAfJce6ntfMUj0XpFRlqQDruM4Kz4U4U0mmTLVQT2fj
kfhvH7adKv6bRxbym1arvv+fBb8V6/o5CAgGK02FZcMkm8nff4DZwQGQGyDSv6EkD1YJZXDD6o4H
EmuxcUb9kIkZyIQGEqZpHEEjk2mDx4HPG5xNGjM0kpes/aZNkrwusgWZiazRNK2G1jP6sZiyWZbS
ED4zNe+AaWq9nBGUfUBIktIpW3RXFlBGhT/hlHBfzDJ/RmU3yFdQitU8xRnKbhJLtjAudAuiOKS8
A0sZ2oEbmkoWC0B7xnbzx72wQBsn2u7A896PP773vG5z2bi68gbu6Znb7124Ay1yr/ru6cXwZHxe
MXpvh96le3aOwi7GjXbAcqT+aqS88ctwfHKGImslOu1d9D+M3Et3VMnd0TvPw1om2AILPeONDs/L
u4qq7l4Tr4RAevJW4iFYbp/uGJ94w/FoOHYLjfOLQd/7cHKOq0P7di7DaXnnJx/P+i4OECRZlzXf
tLEa+cEcz0/RHBSF521UimFVJqiXb/l6O6FCsSxK0hil1aksnmYMNAv909N1Z8IeEtB5+7CnjYzy
VTVwF/aNV0wEPAsp7JqmuQuS+mkwhzwvKAlzmtLOivIjUn56kLJ+WAp2AyOI3DS/0nX/KH2NPPGD
689+Gj7E2fKwPqR1n7nJKluuCCGelpvAmVTmtqES2AnPJJAphjH6MKBSYsAX7gPyZ8aoAhKigye+
pCsHk9KjRdIx5Za+1myMzg32vUnu68eRHEEcJYzj3Ca3oHXXNbddNqay6nOfMWGi4eOeEJViIlVo
w+dkGqeRj1txCeTX22rVG4vHBzQaYYJLq6k5pm0/tCrIZJ6g374bbFDrPPdC8tzapcvK9zZ1rnuZ
ua5y4P1st/5stZbvCvF3l/GKdd/ZgGfPejHnNFAOkAgonxYRHN4KP2Kae41T0ePwcKlqyth0ypRd
GMPuIFU2Lma9zar2t04mVRM60xcBGW2juSX9Ef+h3r8dsLzHKucSLlWo7xMe4RdH8eSyxN/gjmTb
zaIivLPlaNtYTqEDQwHTTAT5+YNPufB1p+jbMxVdqANrQfc7kIkQ/3IIjAz864FpUAQUVAyfqreZ
r43ykHSAh8XbDKTbQBdM5RlUZbJ+sVGjRo0aNWrUqFGjRo0aNWrUeGb8DUCsipkAKAAA



More information about the Gcc-bugs mailing list