c++/444: Optimised compile of template class calling htonl fails
ed.rice@prth.pgs.com
ed.rice@prth.pgs.com
Thu Aug 3 23:36:00 GMT 2000
>Number: 444
>Category: c++
>Synopsis: Optimised compile of template class calling htonl fails
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Aug 03 23:36:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Ed Rice
>Release: gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
Redhat V6.2 linux on intel PC
>Description:
With optimisation switched on the htonl function (from
<netinet/in.h>) is defined as a byteswap macro that includes
some asm commands. If htonl is included in a class template
the compiler generates errors compiling the asm. If htonl
is in a normal class or function no error occurs. The
example generates the error messages -
htonltest.C: In method `test1<5>::test1()':
htonltest.C:29: instantiated from here
htonltest.C:8: `volatile' undeclared (first use this function)
htonltest.C:8: (Each undeclared identifier is reported only once
htonltest.C:8: for each function it appears in.)
htonltest.C:8: warning: qualifier ignored on asm
If htonl is commented out in the template class only
the example will compile without error
>How-To-Repeat:
Example code -
#include <netinet/in.h>
template<int n> class test1 {
public:
test1() {
int i=n;
j = htonl(i);
}
private:
int j;
};
class test2 {
public:
test2(int n) {
int i=n;
j = htonl(i);
}
private:
int j;
};
int main() {
test2 t(5);
test1<5> t5;
int i=1;
int j = htonl(i);
return(j);
}
>Fix:
Either move htonl out of templated code or
use #undef htonl before the htonl call in template
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="htonltest.ii.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="htonltest.ii.gz"
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
More information about the Gcc-prs
mailing list