I'm getting:
/builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp: In function 'void lib::linkimage(EnvT*)': /builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp:159:36: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] (BaseGDL* &) dynFun[count_fun] = ~~~~~~~~~~~~~~~~^ (BaseGDL*) dlsym(module[count], entryName.c_str());
dynFun is defined as:
BaseGDL*(*dynFun[MAXNDLL/2])( EnvT* e);
This is all beyond me. Missing the function pointer argument specification?
Thanks.
Orion Poplawski wrote:
I'm getting:
/builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp: In function 'void lib::linkimage(EnvT*)': /builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp:159:36: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] (BaseGDL* &) dynFun[count_fun] = ~~~~~~~~~~~~~~~~^ (BaseGDL*) dlsym(module[count], entryName.c_str());
dynFun is defined as:
BaseGDL*(*dynFun[MAXNDLL/2])( EnvT* e);
This is all beyond me. Missing the function pointer argument specification?
Try:
dynFun[count_fun] = (BaseGDL*(*)(EnvT*)) dlsym(module[count], entryName.c_str());
Kevin Kofler
Kevin Kofler wrote:
Orion Poplawski wrote:
I'm getting:
/builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp: In function 'void lib::linkimage(EnvT*)': /builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp:159:36: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] (BaseGDL* &) dynFun[count_fun] = ~~~~~~~~~~~~~~~~^ (BaseGDL*) dlsym(module[count], entryName.c_str());
dynFun is defined as:
BaseGDL*(*dynFun[MAXNDLL/2])( EnvT* e);
This is all beyond me. Missing the function pointer argument specification?
Try:
dynFun[count_fun] = (BaseGDL*(*)(EnvT*)) dlsym(module[count], entryName.c_str());
Yes. Introducing a typedef might aid understanding:
typedef BaseGDL* (*dynFun_t)(EnvT* e); dynFun_t dynFun[MAXDLL/2]; // ... dynFun[count_fun] = (dynFun_t) dlsym(...);
On 04/12/2018 07:40 AM, John Reiser wrote:
Kevin Kofler wrote:
Orion Poplawski wrote:
I'm getting:
/builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp: In function 'void lib::linkimage(EnvT*)': /builddir/build/BUILD/gdl-0.9.8/src/basic_pro_jmg.cpp:159:36: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] (BaseGDL* &) dynFun[count_fun] = ~~~~~~~~~~~~~~~~^ (BaseGDL*) dlsym(module[count], entryName.c_str());
dynFun is defined as:
BaseGDL*(*dynFun[MAXNDLL/2])( EnvT* e);
This is all beyond me. Missing the function pointer argument specification?
Try:
dynFun[count_fun] = (BaseGDL*(*)(EnvT*)) dlsym(module[count], entryName.c_str());
Yes. Introducing a typedef might aid understanding:
typedef BaseGDL* (*dynFun_t)(EnvT* e); dynFun_t dynFun[MAXDLL/2]; // ... dynFun[count_fun] = (dynFun_t) dlsym(...);
Thanks!