Hi,
i wan't to create aliase (name and type) for the elements of an
char-array. Unfortunately my gcc produce the warning "dereferencing
type-punned pointer will break strict-aliasing rules", if i use -O2 or
bigger. Since i set -Werror, the warning will become an error.
I attached an example to this mail. To compile and generate the problem,
i use "gcc -O2 -Werror -Wall main.cpp".
I found an workaround (without using pragma, or somethink else), with
it's included in the code, too. To activate, pass an extra "-DWorking"
to the gcc-Command. The workaround is working, but using an pointer is
ugly.
Best regrads,
Marcel
--
Dipl. Ing (FH) Marcel Behlau
(Software Developer)
ELFIN GmbH
Siegburger Straße 215
50679 Köln
Germany
Tel: +49 (221) 6778932-0
Fax: +49 (221) 6778932-2
marcel.beh...@elfin.de
www.elfin.de
//gcc -O2 -Wall main.cpp
//gcc -O2 -Wall main.cpp -DWorking
//#define Working
struct Ec
{
char ecData;
};
class ClassZero
{
public:
char data[8];
char* pointer;
Ec& ec0;
#ifdef Working
ClassZero() : pointer(data), ec0(*(Ec*)(pointer)) { }
#else
ClassZero() : ec0(*(Ec*)(data)) { }
#endif
};
int main()
{
return 0;
}