取函数的地址取到的是异常的值,函数地址赋值后发生改变?
取函数的地址取到的是错误的值,函数地址赋值后发生改变??????C/C++ codetypedef void* (*ptr)(int, int, u
取函数的地址取到的是错误的值,函数地址赋值后发生改变??????
C/C++ code typedef void* (*ptr)(int, int, unsigned int, int); ptr p = (myfunction);
调试时发现,p的值与myfunction的地址是不同的,为什么会有这种情况发生?
上面的代码是.cpp文件中的,而myfunction是.c中的函数。
不是所有函数都有这种情况,部分如此。
[解决办法]我猜可能是C和C++代码一起使用出现的问题
[解决办法]大概是因为C与CPP的语义表还有符号表的不同造成的问题吧!就像同一个函数…在C中可能存为:_fun
在CPP中可能就为:void_fun_int_int之类的…符号表是改变了的!所以CPP支持重载而C不支持…貌似楼主出现该问题的原因是标准头文件的extern "C"的原因吧…
在标准头文件中应该都有个定义
#ifndef __INCvxWorksh
#define __INCvxWorksh
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
具体什么用我忘记了!貌似在一本书上看到过…知道的就那么多了!望有人来探讨一下…相互增进…
(我是新手…可能有错…说错勿喷…)