lcm-proj / lcm

Lightweight Communications and Marshalling
GNU Lesser General Public License v2.1
980 stars 388 forks source link

Missing void* cast in 1.4.0 which was there in 1.3.1 #338

Closed daveHitchman closed 3 years ago

daveHitchman commented 3 years ago

In vsn 1,3,1 the output had: const __lcm_hash_ptr cp = { p, (void*)tXXXXX:getHash };

now it has const __lcm_hash_ptr cp = { p, tXXXXX::getHash };

I dont know why the cast to (void) was dropped but the compiler wont take it because getHash is NOT the same type as hash_ptr : error error: invalid conversion from 'int64_t ()() {aka long long int ()()}' to 'void' [-fpermissive]

daveHitchman commented 3 years ago

For me the getHash function is in fact declared as an int64_t and the structure declaration for __lcm_hash_ptr also expects an int64_t which makes it a bit bizarre

daveHitchman commented 3 years ago

OK, further checking the structure __lcm_hash_ptr has been changed, the compiler seems to be getting knotted, maybe its finding an old lcm_coretypes.h not really sure but will close the issue

bluesquall commented 1 year ago

I'm seeing something related with both 1.4.0 and 1.5.0 in a container, so no chance it is finding an old lcm_coretypes.h.

To avoid necrobumping, I'm opening a new issue (#450) and just leaving this comment here for anyone who finds this issue first when searching.